标签:不能 数据 number boolean 返回 size 参数 常用 add
定义?
JSON(JavaScript Object Notation):JavaScript对象表示法。
为什么使用JSON?
支持哪些数据类型?
补充:Object表示对象,类似于C语言中的结构体,以花括号{}括起来,其元素要求位键值对,其中key必须为String类型的,而value可以是任何类型。key和value之间以 : 表示映射关系。
目前最常用的三种json解析方式:
1)普通的json jar 包
<!-- https://mvnrepository.com/artifact/org.json/json -->
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20160810</version>
</dependency>
2)阿里的fastjson jar包
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
3)谷歌的gjson jar包
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.2</version>
</dependency>
关于json的常见方法?
初始化(以fastJson为例):
public static void main(String[] args){
//初始化
//one:
JSONObject obj1 = new JSONObject();
obj1.put("name","Rain");
obj1.put("age","18");
System.out.println(obj1);
//two:
//参数默认为false,代表其内部维护的是HashMap,true则表示维护的是LinkedHashMap,即输出时按照put的顺序输出
JSONObject obj2 = new JSONObject(true);
obj2.put("age","18");
obj2.put("name","Rain");
System.out.println(obj2);
//three:
//因其内部维护的是Map,所以初始化不能直接使用对象
Map<String,Object> map = new HashMap<>();
map.put("name","Rain");
map.put("age","18");
JSONObject obj3 = new JSONObject(map);
System.out.println(obj3);
//four:
String str = "{‘name‘:‘Rain‘,‘age‘:‘18‘}";
JSONObject obj4 = JSONObject.parseObject(str);
System.out.println(obj4);
}
控制台输出:(重点注意下第二种)
{"name":"Rain","age":"18"}
{"age":"18","name":"Rain"}
{"name":"Rain","age":"18"}
{"name":"Rain","age":"18"}
Json对象转Json字符串,Json字符串转对象:
public static void main(String[] args){
//json对象转字符串
JSONObject obj1 = new JSONObject();
obj1.put("name","Mei");
obj1.put("age",18);
//toString()与toJSONString()方法相同,具体可看class文件。
String jsonStr1 = obj1.toJSONString();
System.out.println(jsonStr1);
//json字符串转json对象
String jsonStr2 = "{‘name‘:‘Mei‘,‘age‘:18}";
JSONObject obj2 = (JSONObject) JSONObject.parse(jsonStr2);
System.out.println(obj2);
}
ListMap转Json数组:
public static void main(String[] args){
//ListMap转Json数组
List<Map<String,String>> listMap = new ArrayList<>();
Map<String,String> map = new HashMap<>();
map.put("name","Mei");
map.put("age","18");
listMap.add(map);
JSONArray jsonArray = JSONArray.fromObject(listMap);
System.out.println(jsonArray);
}
获取数据方法:
public static void main(String[] args) throws JSONException { JSONObject obj = new JSONObject(); obj.put("name","Mei"); obj.put("age","18"); System.out.println("The name is: "+obj.getString("name")); System.out.println("The age is: "+obj.optString("age"));
System.out.println("The sex is: "+obj.optString("sex","F"));
}
getString()和optString()方法都可以根据key获取对应value的值。区别在于,getString()获取如果key为空值会抛异常,optString()会返回空字符串 "" 或者指定的值。
实际开发中常用的四种json工具包的比较:
https://blog.csdn.net/jiyueqianxue/article/details/83377181
标签:不能 数据 number boolean 返回 size 参数 常用 add
原文地址:https://www.cnblogs.com/Rain1203/p/11918181.html