Java中JSON-lib包解析Json格式总结
JSON-lib包是一个beans,collections,maps,java arrays,XML和JSON互相转换的包,可以将Java对象转成json格式的字符串,也可以将Java对象转换成xml格式的文档,同样可以将json字符串转换成Java对象或是将xml字符串转换成Java对象。
下载
JSON-lib包下载地址:http://json-lib.sourceforge.net/
格式转换方法
1. List集合转换成json方法
List list = new ArrayList(); list.add( "one" ); list.add( "two" ); JSONArray jsonArray2 = JSONArray.fromObject( list );
2. Map集合转换成json方法
Map map = new HashMap(); map.put("name", "json"); map.put("bool", Boolean.TRUE); map.put("int", new Integer(1)); map.put("arr", new String[] { "a", "b" }); map.put("func", "function(i){ return this.arr[i]; }"); 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);
7. JSONObject转换DynaBean方法
String json = "{name=\"json\",bool:true,int:1,double:2.2}"; JSONObject jsonObject = JSONObject.fromObject(json); //抽象的写法:DynaBean bean = (DynaBean) JSONSerializer.toJava( jsonObject ); Object bean = JSONObject.toBean(jsonObject); //Object bean1 = JSONSerializer.toJava(jsonObject); assertEquals(jsonObject.get("name"), PropertyUtils.getProperty(bean, "name")); assertEquals(jsonObject.get("bool"), PropertyUtils.getProperty(bean, "bool")); assertEquals(jsonObject.get("int"), PropertyUtils.getProperty(bean, "int")); assertEquals(jsonObject.get("double"), PropertyUtils.getProperty(bean, "double"));
8. JSONObject转换JavaBean方法
String json = "{name:\"zhangsan\",age:25,hight:1.72,sex:true}"; JSONObject jsonObject = JSONObject.fromObject(json); UserBean bean = (UserBean) JSONObject.toBean(jsonObject, UserBean.class); System.out.println(jsonObject);
9. JSONArray转换List方法
String json = "[\"first\",\"second\"]"; JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON(json); List output = (List) JSONSerializer.toJava(jsonArray);
10. JSONArray转换array方法
String json = "[\"first\",\"second\"]"; JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON(json); JsonConfig jsonConfig = new JsonConfig(); jsonConfig.setArrayMode(JsonConfig.MODE_OBJECT_ARRAY); Object[] output = (Object[]) JSONSerializer.toJava(jsonArray, jsonConfig); Object[] expected = new Object[] { "first", "second" }; ArrayAssertions.assertEquals(expected, output);
11. Arrays转换Json方法
@Test public void array2json() { int[] intArray = new int[] { 1, 4, 5 }; JSONArray jsonArray1 = JSONArray.fromObject(intArray); System.out.println("int[] intArray"); System.out.println(jsonArray1); boolean[] boolArray = new boolean[] { true, false, true }; System.out.println("boolean[] boolArray"); JSONArray jsonArray2 = JSONArray.fromObject(boolArray); System.out.println(jsonArray2); int[][] int2Array = new int[][] { { 1, 2 }, { 3, 4 } }; JSONArray jsonArray3 = JSONArray.fromObject(int2Array); System.out.println("int[][] int2Array"); System.out.println(jsonArray3); float[] floatArray = new float[] { 0.1f, 0.2f, 0.3f }; JSONArray jsonArray4 = JSONArray.fromObject(floatArray); System.out.println("float[] floatArray"); System.out.println(jsonArray4); String[] strArray = new String[] { "hello", "hebut", "xiapi" }; JSONArray jsonArray5 = JSONArray.fromObject(strArray); System.out.println("String[] strArray"); System.out.println(jsonArray5); }
运行结果:
int[] intArray [1,4,5] boolean[] boolArray [true,false,true] int[][] int2Array [[1,2],[3,4]] float[] floatArray [0.1,0.2,0.3] String[] strArray ["hello","hebut","xiapi"]
12. Collections转换Json方法
@Test public void collections2json() { List list1 = new ArrayList(); list1.add("first"); list1.add("second"); JSONArray jsonArray1 = JSONArray.fromObject(list1); System.out.println("List list1"); System.out.println(jsonArray1); List < Student > list2 = new ArrayList < Student > (); list2.add(new Student("xiapi1", "男", 10)); list2.add(new Student("xiapi2", "女", 11)); list2.add(new Student("xiapi3", "男", 12)); JSONArray jsonArray2 = JSONArray.fromObject(list2); System.out.println("List<Student> list2"); System.out.println(jsonArray2); }
运行结果:
List list1 ["first","second"] List<Student> list2 [{"age":10,"sex":"男","userName":"xiapi1"},{"age":11,"sex":"女","userName":"xiapi2"},{"age":12,"sex":"男","userName":"xiapi3"}]
13. Xml转换Json方法
@Test public void xml2json() { String s = "<student> <name id='n1'>xiapi</name> <sex class='s1'>男</sex> <age>20</age> </student>"; XMLSerializer x = new XMLSerializer(); JSON json = x.read(s); System.out.println("XmlToJson"); System.out.println(json.toString()); }
运行结果:
2012-5-21 19:01:03 net.sf.json.xml.XMLSerializer getType 信息: Using default type string XmlToJson {"name":{"@id":"n1","#text":"xiapi"},"sex":{"@id":"s1","#text":"男"},"age":"20"}
解析例子
/** * 使用json-lib构造和解析Json数据 */ public class JsonTest { public static String BuildJson() { // JSON格式数据解析对象 JSONObject jo = new JSONObject(); // 下面构造两个map、一个list和一个Employee对象 Map<String, String> map1 = new HashMap<String, String>(); map1.put("name", "Alexia"); map1.put("sex", "female"); map1.put("age", "23"); Map<String, String> map2 = new HashMap<String, String>(); map2.put("name", "Edward"); map2.put("sex", "male"); map2.put("age", "24"); List<Map> list = new ArrayList<Map>(); 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", ja1); jo.put("employee", ja2); System.out.println("\n最终构造的JSON数据格式:"); System.out.println(jo.toString()); return jo.toString(); } /** * 解析Json数据 */ public static void ParseJson(String jsonString) { // 以employee为例解析,map类似 JSONObject jb = JSONObject.fromObject(jsonString); JSONArray ja = jb.getJSONArray("employee"); List<Employee> empList = new ArrayList<Employee>(); // 循环添加Employee对象(可能有多个) for (int i = 0; i < ja.size(); i++) { Employee employee = new Employee(); employee.setName(ja.getJSONObject(i).getString("name")); employee.setSex(ja.getJSONObject(i).getString("sex")); employee.setAge(ja.getJSONObject(i).getInt("age")); empList.add(employee); } System.out.println("\n将Json数据转换为Employee对象:"); for (int i = 0; i < empList.size(); i++) { Employee emp = empList.get(i); System.out.println("name: " + emp.getName() + " sex: " + emp.getSex() + " age: " + emp.getAge()); } } /** * @param args */ public static void main(String[] args) { ParseJson(BuildJson()); } }
运行结果:

版权声明:本文为JAVASCHOOL原创文章,未经本站允许不得转载。