在现在的开发当中,
绝大多数引用阿里巴巴的fastjson。
当然net.sf.json同样可以使用。
一、引入com.alibaba.fastjson包
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.66</version>
</dependency>
常用的格式转化:
Student stu = new Student("公众号编程大道", "m", 2);//Java对象转化为JSON对象JSONObject jsonObject = (JSONObject) JSONObject.toJSON(stu);System.out.println("Java对象转化为JSON对象\n" + jsonObject);
//{"name":"公众号编程大道","age":2,"sex":"m"}
Student stu = new Student("公众号编程大道", "m", 2);//Java对象转换成JSON字符串String stuString = JSONObject.toJSONString(stu);System.out.println("Java对象转换成JSON字符串\n" + stuString);
//{"age":2,"name":"公众号编程大道","sex":"m"}
Student stu = new Student("公众号编程大道", "m", 2);//先转成JSON对象JSONObject jsonObject = (JSONObject) JSONObject.toJSON(stu);//JSON对象转换为JSON字符串String jsonString = jsonObject.toJSONString();
System.out.println("JSON对象转换为JSON字符串\n" + jsonString);//{"name":"公众号编程大道","age":2,"sex":"m"}
Student stu = new Student("公众号编程大道", "m", 2);//先转成JSON对象JSONObject jsonObject = (JSONObject) JSONObject.toJSON(stu);//JSON对象转换成Java对象Student student = JSONObject.toJavaObject(jsonObject, Student.class);System.out.println("JSON对象转换成Java对象\n" + student);
//Student{name='公众号编程大道', sex='m', age=2}
String stuString = "{\"age\":2,\"name\":\"公众号编程大道\",\"sex\":\"m\"}";//JSON字符串转换成JSON对象JSONObject jsonObject1 = JSONObject.parseObject(stuString);System.out.println("JSON字符串转换成JSON对象\n" + jsonObject1);
//{"sex":"m","name":"公众号编程大道","age":2}
String stuString = "{\"age\":2,\"name\":\"公众号编程大道\",\"sex\":\"m\"}";//JSON字符串转换成Java对象Student student1 = JSONObject.parseObject(stuString, Student.class);System.out.println("JSON字符串转换成Java对象\n" + student1);
//Student{name='公众号编程大道', sex='m', age=2}
更全面
//Object转jsonJSONObject j1 = (JSONObject)JSONObject.toJSON(man1);//json转ObjectMan man3 = JSONObject.parseObject(j2.toJSONString(), Man.class);String aaa = "{\"name\":\"张三\",\"id\":\"1\"}";//String转JSONObjectJSONObject j1 = JSONObject.parseObject(aaa);//JSONObject转StringString bbb = j1.toJSONString(); String aaa = "[{\"name\":\"张三\",\"id\":\"1\"},{\"name\":\"李四\",\"id\":\"2\"}]";//String转jsonArrayJSONArray jsArr = JSONObject.parseArray(aaa);// jsonArray转StringString bbb = jsArr.toJSONString();// list转jsonArrayJSONArray array = JSONArray.parseArray(JSONObject.toJSONString(mans));// jsonArray转listList<Man> list = JSONObject.parseArray(js2.toJSONString(), Man.class);
二、引入net.sf.json包(解析json精度丢失)
<dependency><groupId>net.sf.json-lib</groupId><artifactId>json-lib</artifactId><version>2.4</version><classifier>jdk15</classifier>
</dependency>
常用的格式转化:
string字符串-------》json数组String json = “[{‘day1’:’work’,’day2’:26},{‘day1’:123,’day2’:26}]”;
JSONArray jsonArray = JSONArray.fromObject(json);
单个json对象转换String aa = "{user:{name:\"张三\",age:\"20\"}}";JSONObject obj = JSONObject.fromObject(aa);
List 转换成json(Map也可以)List list = new ArrayList();
jb1.setCol(1);
jb1.setRow(1);
jb1.setValue("xx");JSONArray ja = JSONArray.fromObject(list);
遍历Json数组输出每个成员for(int i=0; i<jsonArray.size(); i++){ System.out.println(jsonArray.get(i));
}
获取每个成员的key及valueJSONObject obj = (JSONObject) jsonArray.get(i);
Iterator it = obj.keys();
while (it.hasNext()) { String key = it.next().toString(); System.out.println("key ----- "+key); System.out.println("value ----- "+obj.get(key));
}
增加JSONObject obj2 = new JSONObject();
obj2.put("day1", "study");
obj2.put("day2", "2");
jsonArray.add(obj2);
删除jsonArray.remove(index);
jsonArray.subList(fromIndex, toIndex)