1、JSON 简介
http://www.w3school.com.cn/json/index.asp
2、JSON.parseObject(String str)与JSONObject.parseObject(String str)的区别
https://www.cnblogs.com/fu512/p/7595144.html
3、JsonObject 数据排序(顺序)问题
JsonObject内部是用Hashmap来存储的,所以输出是按key的排序来的,如果要让JsonObject按固定顺序(put的顺序)排列,可以修改JsonObject的定义HashMap改为LinkedHashMap。
public JSONObject() {
this.map = new LinkedHashMap(); //new HashMap();
}
即定义JsonObject可以这样:JSONObject jsonObj = new JSONObject(new LinkedHashMap());
或者 JSONObject jsonObj = new JSONObject(true);
4、java JsonArray中添加json数据
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
public class p3 {
public static void main(String[] args) {
// json数组,存放json对象
JSONArray jsonArray = new JSONArray();
// json对象1
JSONObject json1 = new JSONObject();
json1.put("a","1");
json1.put("b","2");
json1.put("c","3");
// json对象2
JSONObject json2 = new JSONObject();
json2.put("a","4");
json2.put("b","5");
json2.put("c","6");
// 将json对象添加到json数组
jsonArray.add(json1);
jsonArray.add(json2);
// 打印json数组
System.out.println(jsonArray.toString());
}
}
控制台打印结果:
[{"a":"1","b":"2","c":"3"},{"a":"4","b":"5","c":"6"}]
5、Json格式字符串转Map
//Json格式字符串转Map
public static void jsonStringToMap(){
String str = "{\"0\":\"zhangsan\",\"1\":\"lisi\",\"2\":\"wangwu\",\"3\":\"maliu\"}";
//第一种方式
Map maps = (Map) JSON.parse(str);
System.out.println("这个是用JSON类来解析JSON字符串!!!");
for (Object map : maps.entrySet()){
System.out.println(((Map.Entry)map).getKey()+" " + ((Map.Entry)map).getValue());
}
//第二种方式
Map mapTypes = JSON.parseObject(str);
System.out.println("这个是用JSON类的parseObject来解析JSON字符串!!!");
for (Object obj : mapTypes.keySet()){
System.out.println("key为:"+obj+"值为:"+mapTypes.get(obj));
}
//第三种方式
Map mapType = JSON.parseObject(str,Map.class);
System.out.println("这个是用JSON类,指定解析类型,来解析JSON字符串!!!");
for (Object obj : mapType.keySet()){
System.out.println("key为:"+obj+"值为:"+mapType.get(obj));
}
//第四种方式
/**
* JSONObject是Map接口的一个实现类
*/
Map json = (Map) JSONObject.parse(str);
System.out.println("这个是用JSONObject类的parse方法来解析JSON字符串!!!");
for (Object map : json.entrySet()){
System.out.println(((Map.Entry)map).getKey()+" "+((Map.Entry)map).getValue());
}
//第五种方式
/**
* JSONObject是Map接口的一个实现类
*/
JSONObject jsonObject = JSONObject.parseObject(str);
System.out.println("这个是用JSONObject的parseObject方法来解析JSON字符串!!!");
for (Object map : json.entrySet()){
System.out.println(((Map.Entry)map).getKey()+" "+((Map.Entry)map).getValue());
}
//第六种方式
/**
* JSONObject是Map接口的一个实现类
*/
Map mapObj = JSONObject.parseObject(str,Map.class);
System.out.println("这个是用JSONObject的parseObject方法并执行返回类型来解析JSON字符串!!!");
for (Object map: json.entrySet()){
System.out.println(((Map.Entry)map).getKey()+" "+((Map.Entry)map).getValue());
}
String strArr = "{{\"0\":\"zhangsan\",\"1\":\"lisi\",\"2\":\"wangwu\",\"3\":\"maliu\"}," +
"{\"00\":\"zhangsan\",\"11\":\"lisi\",\"22\":\"wangwu\",\"33\":\"maliu\"}}";
// JSONArray.parse()
System.out.println(json);
}
控制台输出:
这个是用JSON类来解析JSON字符串!!!
0 zhangsan
1 lisi
2 wangwu
3 maliu
这个是用JSON类的parseObject来解析JSON字符串!!!
key为:0值为:zhangsan
key为:1值为:lisi
key为:2值为:wangwu
key为:3值为:maliu
这个是用JSON类,指定解析类型,来解析JSON字符串!!!
key为:0值为:zhangsan
key为:1值为:lisi
key为:2值为:wangwu
key为:3值为:maliu
这个是用JSONObject类的parse方法来解析JSON字符串!!!
0 zhangsan
1 lisi
2 wangwu
3 maliu
这个是用JSONObject的parseObject方法来解析JSON字符串!!!
0 zhangsan
1 lisi
2 wangwu
3 maliu
这个是用JSONObject的parseObject方法并执行返回类型来解析JSON字符串!!!
0 zhangsan
1 lisi
2 wangwu
3 maliu
{"0":"zhangsan","1":"lisi","2":"wangwu","3":"maliu"}