您的当前位置:首页正文

java解析json

来源:帮我找美食网
java解析json

在上公布了很多JAVA下的json构造和解析⼯具,其中org.json和json-lib⽐较简单,两者使⽤上差不多但还是有些区别。下⾯⾸先介绍⽤json-lib构造和解析Json数据的⽅法⽰例。⼀、介绍

JSON-lib包是⼀个beans,collections,maps,java arrays 和XML和JSON互相转换的包,主要就是⽤来解析Json数据,在其官⽹有详细讲解,有兴趣的可以去研究。⼆、下载jar包,可以去这⾥下载三、JSON介绍

1. List集合转换成json⽅法

List list = new ArrayList();list.add( \"first\" );list.add( \"second\" );

JSONArray jsonArray2 = JSONArray.fromObject( list );

2. Map集合转换成json⽅法

Map map = new HashMap();map.put(\"name\

map.put(\"bool\map.put(\"int\

map.put(\"arr\

map.put(\"func\JSONObject json = JSONObject.fromObject(map);

3. Bean转换成json代码

JSONObject jsonObject = JSONObject.fromObject(new JsonBean());

4. 数组转换成json代码

boolean[] boolArray = new boolean[] { true, false, true };

JSONArray jsonArray1 = JSONArray.fromObject(boolArray);

5. ⼀般数据转换成json代码

JSONArray jsonArray3 = JSONArray.fromObject(\"['json','is','easy']\" );

6. beans转换成json代码

List list = new ArrayList();

JsonBean2 jb1 = new JsonBean2();jb1.setCol(1);jb1.setRow(1);jb1.setValue(\"xx\");

JsonBean2 jb2 = new JsonBean2();jb2.setCol(2);jb2.setRow(2);jb2.setValue(\"\");

list.add(jb1);list.add(jb2);

JSONArray ja = JSONArray.fromObject(list);

四、代码⽰例12345678910

import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;

101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778

import java.util.Map;

import net.sf.json.JSONArray;import net.sf.json.JSONObject;

public class jsonTest {

/**

* @param args */

public static void main(String[] args) {

jsonTest.BuildJson(); }

/**

* 构造Json数据 *

* @return */

public static String BuildJson() {

// JSON格式数据解析对象

JSONObject jo = new JSONObject();

// 下⾯构造两个map、⼀个list和⼀个Employee对象

Map map1 = new HashMap(); map1.put(\"name\ map1.put(\"sex\ map1.put(\"age\

Map map2 = new HashMap(); map2.put(\"name\ map2.put(\"sex\ map2.put(\"age\

List list = new ArrayList(); list.add(map1); list.add(map2);

Employee employee = new Employee(); employee.setName(\"wjl\"); employee.setSex(\"female\"); employee.setAge(24);

// 将Map转换为JSONArray数据

JSONArray ja1 = JSONArray.fromObject(map1); // 将List转换为JSONArray数据

JSONArray ja2 = JSONArray.fromObject(list); // 将Bean转换为JSONArray数据

JSONArray ja3 = JSONArray.fromObject(employee);

System.out.println(\"JSONArray对象数据格式:\"); System.out.println(ja1.toString()); System.out.println(ja2.toString()); System.out.println(ja3.toString());

// 构造Json数据,包括⼀个map和⼀个Employee对象 jo.put(\"map\

jo.put(\"employee\

System.out.println(\"\\n最终构造的JSON数据格式:\"); System.out.println(jo.toString());

return jo.toString();

}

/**

* 解析Json数据 *

* @param jsonString Json数据字符串 */

public static void ParseJson(String jsonString) {

// 以employee为例解析,map类似

JSONObject jb = JSONObject.fromObject(jsonString); JSONArray ja = jb.getJSONArray(\"employee\");

78

79 List empList = new ArrayList();80

81 // 循环添加Employee对象(可能有多个)82 for (int i = 0; i < ja.size(); i++) {

83 Employee employee = new Employee();84

85 employee.setName(ja.getJSONObject(i).getString(\"name\"));86 employee.setSex(ja.getJSONObject(i).getString(\"sex\"));

employee.setAge(ja.getJSONObject(i).getInt(\"age\"));87

88 empList.add(employee);89 }90

91 System.out.println(\"\\n将Json数据转换为Employee对象:\");92 for (int i = 0; i < empList.size(); i++) {93 Employee emp = empList.get(i);

94 System.out.println(\"name: \" + emp.getName() + \" sex: \"95 + emp.getSex() + \" age: \" + emp.getAge());96 }

97

}98 99 /**

100 * @param args101 */

102 public static void main(String[] args) {103 // TODO Auto-generated method stub104

ParseJson(BuildJson());105 }106 107}108109110111112113

五、运⾏结果如下六、与org.json⽐较

json-lib和org.json的使⽤⼏乎是相同的,⾥⾯总结出的区别有两点:

1. org.json⽐json-lib要轻量得多,前者没有依赖任何其他jar包,⽽后者要依赖ezmorph和commons的lang、logging、beanutils、collections等组件

2. json-lib在构造bean和解析bean时⽐org.json要⽅便的多,json-lib可直接与bean互相转换,⽽org.json不能直接与bean相互转换⽽需要map作为中转,若将bean转为json数据,⾸先需要先将bean转换为map再将map转为json,⽐较⿇烦。

总之,还是那句话—适合⾃⼰的才是最好的,⼤家要按需选取使⽤哪种⽅法进⾏解析。最后给⼤家介绍两款解析Json数据的⼯具:⼀是在线⼯具JSONhttp://braincast.nl/samples/jsoneditor/);另⼀个是Eclipse的插件JSON Tree Analyzer,都很好⽤,推荐给⼤家使⽤!

因篇幅问题不能全部显示,请点此查看更多更全内容

Top