java解析json,Java解析JSON数组

本文目录一览:

如何java解析json数组

工具/原料

安装有eclipse软件的电脑一台

方法/步骤

1

首先我们在eclipse中创建一个java工程,在java工程中创建一个HelloWorld的类,在这个java的入口程序中,我们来创建一个json字符串,并且打印出来,如下图:

2

将我们刚刚创建的json字符串打印出来如下所示,可以看出这个json包含了一个大json对象,大json对象里面又包含一个json数组,一个数组里面又包含三个json对象,如下图:

3

在java中我们要解析json数组必须借助第三方包,所以这里我们加载一下第三方包,首先我们将鼠标移动到项目名称上面去,然后右键召唤出右键快捷菜单,然后依次点击Build Path-Configure Build Paht…,如下图:

4

然后我们按照图中红色方框所示点击Libraries,然后点击Add Library…,如下图所示:

5

然后我们继续按照图中所示点击User Library,然后点击Next,如下图:

6

然后我们继续按照图中红色方框所示点击User Libraries…,如下图:

7

然后我们点击New…,来开始创建我们自己的libraries,如下图:

8

然后我们输入我们自己jar库的名字,这里我使用了jsonjar作为我们的名字,如下图:

9

接下来为我们的jar库添加jar包,我们按照下图中红色方框所示点击“Add External JARs”,如下图:

10

我们添加json相关的jar包,这里涉及json的第三方包主要包括这七个,所以我们把这七个包都引入到我们自己的jar库中去,如下图:

11

返回到User Libraries中发现,我们已经引入了所有的jar包,如下图:

我们按照下图中红色方框所示画勾,然后点击finish,如下图:

然后我们按照图中红色边框所示点击Apply,然后点击OK,如下图:

回到我们的工程中,从工程目录中我们可以看到,我们已经添加了自己的名字为jsonjar的jar库,如下图:

接下来我们回到程序中,在头部添加“import net.sf.json.JSONArray;import net.sf.json.JSONObject;”这两句代码,这两句表示引入了解析json的对象和数组的包,如下图:

然后我们通过代码“JSONObject.fromObject(json_array)”来将我们之前创建的json字符串转换成json对象,并且通过键值对的方式打印出json对象名字为“employees”的值,如下图:

打印出的名字为“employees”的json对象的值如下图是一个数组字符串,如下图:

接下来我们通过代码“jsonobj.getJSONArray(“employees”)”来将获取的数组字符串转变成为json组数,如下图:

并且我们打印出json数组的长度,可见程序计算的json数组的长度和我们实际的数组长度相一致,如下图:

接下来我们通过一个for循环将我们获取的json数组中的值依次取出来,由于数组中又包含3个对象,我们又需要将3个对象使用代码“JSONObject.fromObject(jsonarr.get(i));”将得到的对象字符串变成对象然后再取出来,如下图:

最后,我们将json数组的所有内容都展示到控制台,这样我们就可以使用java通过第三方json包来解析json数组了,如下图:

java 解析json字符串格式 [{}]

你在哪里解析

1、Java类里面:JSONObject jsonObject = new JSONObject(str);

然后用Iterator迭代器遍历取值,建议用反射机制解析到封装好的对象中

2、javascript:JSON.parse(str);

ie8(兼容模式),ie7和ie6没有JSON对象,不过提供了一个json.js,这样ie8(兼容模式),ie7和ie6就可以支持JSON对象以及其stringify()和parse()方法;你可以在上获取到这个js,一般现在用json2.js。

ie8(兼容模式),ie7和ie6可以使用eval()将字符串转为JSON对象,

var c='{“name”:”Mike”,”sex”:”女”,”age”:”29″}’;

var cToObj=eval(“(“+str+”)”);

java解析json格式文件

/*简单的回了复杂的也就会了*/

/*其实,json实际上是用来统一数据格式,所以,在使用它时,肯定要设计一下格式,

当然,所谓的复杂,只是嵌套的层次深了。。。解析方式并没有变。。个人理解,如果觉得有价值就看,没价值,就当没看见吧。。

呵呵。。

*/

import java.util.ArrayList;

import java.util.HashMap;

import java.util.Iterator;

import java.util.Map;

import net.sf.ezmorph.bean.MorphDynaBean;

import net.sf.json.JSONArray;

import net.sf.json.JSONSerializer;

/**

* @author John

*

*/

public class JSONDemo {

public static final String PREFIX = “index_”;

/**

* @param args

*/

public static void main(String[] args) {

Map map = new HashMap();

String str =”[{‘status’: 5,’remarks’: ‘\\xe6\\xa3\\x80\\xe6\\xb5\\x8b\\xe5\\xb7\\xb2\\xe7\\xbb\\x8f\\xe5\\xae\\x8c\\xe6\\x88\\x90′,’session’: \”(1, ‘9.2.0.1.0’, ‘192.168.177.115’, 1521L, ‘ora9′, 1, ”)\”,’vuls’: [\”(‘612300200001’, 1, ”, [{‘values’: ‘[‘version’]’, ‘type’: 0}, {‘values’: \'[‘%E7%89%88%E6%9C%AC%E5%8F%B7′]\’, ‘type’: 1}])\”,\”(‘612300200002’, 1, ”, [{‘values’: ‘[‘version’]’, ‘type’: 0},{‘values’: ‘[‘%E7%89%88%E6%9C%AC%E5%8F%B7′]’, ‘type’: 1},{‘values’: ‘[‘9.2.0.1.0′]’, ‘type’: 2}])\”], ‘endTime’:123}, 1L, ‘\\xe6\\xb5\\x8b\\xe8\\xaf\\x95\\xe6\\x89\\xab\\xe6\\x8f\\x8f\\xe4\\xbb\\xbb\\xe5\\x8a\\xa1’]”;

System.out.println(“json格式字符串–“+str);

JSONArray array = JSONArray.fromObject(str);

System.out.println(“json格式字符串构造json数组元素的个数–“+array.size());

ArrayList list = (ArrayList) JSONSerializer.toJava(array);

int i = 0;

for (Object obj : list) {

map.put(PREFIX+(i++), obj);

System.out.println(“第”+i+”对象–“+obj);

}

//解析第0个位置

Map bd = new HashMap();

MorphDynaBean bean = (MorphDynaBean) map.get(PREFIX+0);

bd.put(“session”, bean.get(“session”));

bd.put(“status”, bean.get(“status”));

bd.put(“remarks”, bean.get(“remarks”));

bd.put(“vuls”, bean.get(“vuls”));

bd.put(“endTime”, bean.get(“endTime”));

Iterator iter = bd.keySet().iterator();

while (iter.hasNext()){

Object key = iter.next();

Object value = bd.get(key);

System.out.println(“MorphDynaBean对象–key=”+key+”,value=”+value);

}

//解析vuls

ArrayList vuls = (ArrayList) bd.get(“vuls”);

Map vl = new HashMap();

int j = 0;

for (Object obj : vuls) {

vl.put(PREFIX+(j++), obj);

System.out.println(“解析vuls的第”+i+”对象–“+obj);

}

}

}

/*

* json格式字符串–[{‘status’: 5,’remarks’: ‘\xe6\xa3\x80\xe6\xb5\x8b\xe5\xb7\xb2\xe7\xbb\x8f\xe5\xae\x8c\xe6\x88\x90′,’session’: “(1, ‘9.2.0.1.0’, ‘192.168.177.115’, 1521L, ‘ora9′, 1, ”)”,’vuls’: [“(‘612300200001’, 1, ”, [{‘values’: ‘[‘version’]’, ‘type’: 0}, {‘values’: ‘[‘%E7%89%88%E6%9C%AC%E5%8F%B7′]’, ‘type’: 1}])”,”(‘612300200002’, 1, ”, [{‘values’: ‘[‘version’]’, ‘type’: 0},{‘values’: ‘[‘%E7%89%88%E6%9C%AC%E5%8F%B7′]’, ‘type’: 1},{‘values’: ‘[‘9.2.0.1.0′]’, ‘type’: 2}])”], ‘endTime’:123}, 1L, ‘\xe6\xb5\x8b\xe8\xaf\x95\xe6\x89\xab\xe6\x8f\x8f\xe4\xbb\xbb\xe5\x8a\xa1’]

json格式字符串构造json数组元素的个数–3

第1对象–net.sf.ezmorph.bean.MorphDynaBean@94948a[

{session=(1, ‘9.2.0.1.0’, ‘192.168.177.115’, 1521L, ‘ora9’, 1, ”), status=5, remarks=???????·??????????, vuls=[(‘612300200001’, 1, ”, [{‘values’: ‘[‘version’]’, ‘type’: 0}, {‘values’: ‘[‘%E7%89%88%E6%9C%AC%E5%8F%B7′]’, ‘type’: 1}]), (‘612300200002’, 1, ”, [{‘values’: ‘[‘version’]’, ‘type’: 0},{‘values’: ‘[‘%E7%89%88%E6%9C%AC%E5%8F%B7′]’, ‘type’: 1},{‘values’: ‘[‘9.2.0.1.0′]’, ‘type’: 2}])], endTime=123}

]

第2对象–1L

第3对象–???è??????????????

MorphDynaBean对象–key=status,value=5

MorphDynaBean对象–key=session,value=(1, ‘9.2.0.1.0’, ‘192.168.177.115’, 1521L, ‘ora9’, 1, ”)

MorphDynaBean对象–key=remarks,value=???????·??????????

MorphDynaBean对象–key=vuls,value=[(‘612300200001’, 1, ”, [{‘values’: ‘[‘version’]’, ‘type’: 0}, {‘values’: ‘[‘%E7%89%88%E6%9C%AC%E5%8F%B7′]’, ‘type’: 1}]), (‘612300200002’, 1, ”, [{‘values’: ‘[‘version’]’, ‘type’: 0},{‘values’: ‘[‘%E7%89%88%E6%9C%AC%E5%8F%B7′]’, ‘type’: 1},{‘values’: ‘[‘9.2.0.1.0′]’, ‘type’: 2}])]

MorphDynaBean对象–key=endTime,value=123

解析vuls的第3对象–(‘612300200001’, 1, ”, [{‘values’: ‘[‘version’]’, ‘type’: 0}, {‘values’: ‘[‘%E7%89%88%E6%9C%AC%E5%8F%B7′]’, ‘type’: 1}])

解析vuls的第3对象–(‘612300200002’, 1, ”, [{‘values’: ‘[‘version’]’, ‘type’: 0},{‘values’: ‘[‘%E7%89%88%E6%9C%AC%E5%8F%B7′]’, ‘type’: 1},{‘values’: ‘[‘9.2.0.1.0′]’, ‘type’: 2}])

*/

java 解析json字符串

你好:

后台拆分json

private String interactPrizeAll;    //json 使用字符串来接收

方法中的代码:

Gson gson = new Gson();

InteractPrize interactPrize =new InteractPrize();

 //gson用泛型 转List数组 多个对象

ListInteractPrize  interactPrizeList = gson.fromJson(interactPrizeAll, new TypeTokenListInteractPrize(){}.getType()); //TypeToken,它是gson提供的数据类型转换器,可以支持各种数据集合类型转换 

for(int i = 0; i  interactPrizeList.size(); i++)  

   {  

    interactPrize = interactPrizeList.get(i);//获取每一个对象

    }

 这一种方法是转单个对象时使用的

 //gson 转对象 单个对象

//interactPrize = gson.fromJso(interactPrizeAll,InteractPrize.class);

这个方法是我后台拼的json往前台传的方法

jsonStrAll.append(“{“+ “\””+”catid”+”\””+”:”+”\””+c.getCatid()+”\””+”,”+”\””+”catname”+”\””+”:”+”\””+c.getCatname()+”\””+”,”+ “\””+”catdesc”+”\””+”:”+”\””+c.getCatdesc()+”\””+”,”+”\””+”showinnav”+”\””+”:”+”\””+c.getShowinnav()+”\””+”,”+”\””+”sortorder”+”\””+”:”+”\””+c.getSortorder()+”\””+”,”+”level:”+”\””+”0″+”\””+”,parent:”+”\””+”0″+”\””+”,isLeaf:true,expanded:false,”+”loaded:true},”);

你自己挑着用吧!

用java解析json 格式的字符.该如何解析

String temp=”{‘data’:{‘a’:[{‘b1′:’bb1′,’c1′:’cc1’},{‘b2′:’bb2′,’c2′:’cc2’}]}}”;

JSONObject jodata =JSONObject.fromObject(temp);

JSONObject joa =JSONObject.fromObject(jodata.get(“data”).toString());

JSONArray ja=JSONArray.fromObject(joa.get(“a”));

for(int i=0;ija.size();i++){

JSONObject o=ja.getJSONObject(i);

if(o.get(“b1”)!=null){

System.out.println(o.get(“b1”));

}

if(o.get(“c1”)!=null){

System.out.println(o.get(“c1”));

}

if(o.get(“b2”)!=null){

System.out.println(o.get(“b2”));

}

if(o.get(“c2”)!=null){

System.out.println(o.get(“c2”));

}

}

}

注:要包含两个jar包ezmorph-1.0.6.jar和json-lib-2.2.2-jdk15.jar,jar包在附件中

java中Json怎样解析数据?

你这个JSON格式,就是数组里面放数组,所以是,取JSON对象》取JSON数组data》取JSON数组。

import java.util.ArrayList;import java.util.Iterator;import net.sf.json.*;public class MainClass {/*** @param args*/public static void main(String[] args) {JSONObject jsonObj = JSONObject.fromObject(JsonData.getData());JSONArray jsonArr = jsonObj.getJSONArray(“data”);IteratorJSONArray itr = jsonArr.iterator();JSONArray temp;while(itr.hasNext()) {temp = itr.next();System.out.println(“===========Each JSONArray=========”);for(int i = 0; itemp.size(); i++) {System.out.println(temp.get(i));}}}private static class JsonData {private static String getData() {return “{\”data\”:[[5000235,2,3441,8,17,\”北京测试\”,\”10000101111\”,\”\”,\”\”,\”100001\”,\”\”,\”2011-09-23 17:20:07\”,18,\”vhcDefaultPwd\”,1,0,\”2011-09-20 00:00:00\”,12,0,380,\”测试\”,213,1,0,0,0,0,0,\”2012-11-05 14:35:23\”,\”\”],[5000236,27,3442,10,17,\”北京测试2\”,\”1230000\”,\”\”,\”\”,\”2010920002\”,\”111111\”,\”2011-09-23 17:20:08\”,18,\”vhcDefaultPwd\”,1,0,\”2011-09-20 00:00:00\”,12,0,380,\”测试2\”,213,1,0,0,0,0,0,\”2012-11-05 14:35:23\”,\”\”]]}”;}}}

原创文章,作者:GAECM,如若转载,请注明出处:https://www.506064.com/n/316776.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
GAECMGAECM
上一篇 2025-01-09 12:15
下一篇 2025-01-09 12:15

相关推荐

  • Java JsonPath 效率优化指南

    本篇文章将深入探讨Java JsonPath的效率问题,并提供一些优化方案。 一、JsonPath 简介 JsonPath是一个可用于从JSON数据中获取信息的库。它提供了一种DS…

    编程 2025-04-29
  • java client.getacsresponse 编译报错解决方法

    java client.getacsresponse 编译报错是Java编程过程中常见的错误,常见的原因是代码的语法错误、类库依赖问题和编译环境的配置问题。下面将从多个方面进行分析…

    编程 2025-04-29
  • Java腾讯云音视频对接

    本文旨在从多个方面详细阐述Java腾讯云音视频对接,提供完整的代码示例。 一、腾讯云音视频介绍 腾讯云音视频服务(Cloud Tencent Real-Time Communica…

    编程 2025-04-29
  • Java Bean加载过程

    Java Bean加载过程涉及到类加载器、反射机制和Java虚拟机的执行过程。在本文中,将从这三个方面详细阐述Java Bean加载的过程。 一、类加载器 类加载器是Java虚拟机…

    编程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介绍

    本文将详细介绍Java Milvus SearchParam withoutFields的相关知识和用法。 一、什么是Java Milvus SearchParam without…

    编程 2025-04-29
  • Python导入数组

    本文将为您详细阐述Python导入数组的方法、优势、适用场景等方面,并附上代码示例。 一、numpy库的使用 numpy是Python中一个强大的数学库,其中提供了非常丰富的数学函…

    编程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java语言中的一个版本,于2014年3月18日发布。本文将从多个方面对Java 8中某一周的周一进行详细的阐述。 一、数组处理 Java 8新特性之一是Stream…

    编程 2025-04-29
  • Java判断字符串是否存在多个

    本文将从以下几个方面详细阐述如何使用Java判断一个字符串中是否存在多个指定字符: 一、字符串遍历 字符串是Java编程中非常重要的一种数据类型。要判断字符串中是否存在多个指定字符…

    编程 2025-04-29
  • Python返回数组:一次性搞定多种数据类型

    Python是一种多用途的高级编程语言,具有高效性和易读性的特点,因此被广泛应用于数据科学、机器学习、Web开发、游戏开发等各个领域。其中,Python返回数组也是一项非常强大的功…

    编程 2025-04-29
  • VSCode为什么无法运行Java

    解答:VSCode无法运行Java是因为默认情况下,VSCode并没有集成Java运行环境,需要手动添加Java运行环境或安装相关插件才能实现Java代码的编写、调试和运行。 一、…

    编程 2025-04-29

发表回复

登录后才能评论