java json 易用_Java中 Json的使用
Java JSON
本章節(jié)我們將為大家介紹如何在 Java 語言中使用 JSON。
類庫選擇
Java中并沒有內(nèi)置JSON的解析,因此使用JSON需要借助第三方類庫。
下面是幾個(gè)常用的 JSON 解析類庫。
Gson:谷歌開發(fā)的 JSON 庫,功能十分全面。
FastJson:阿里巴巴開發(fā)的 JSON 庫,性能十分優(yōu)秀。
Jackson:社區(qū)十分活躍且更新速度很快。
以下教程基于 FastJson 講解。
環(huán)境配置
在 Maven 構(gòu)建的項(xiàng)目中,在pom.xml文件中加入以下依賴即可。
com.alibaba
fastjson
1.2.47
編碼與解碼
編碼
從Java變量到 JSON 格式的編碼過程如下:
public voidtestJson() {
JSONObject object= newJSONObject();//string
object.put("string","string");//int
object.put("int",2);//boolean
object.put("boolean",true);//array
List integers = Arrays.asList(1,2,3);
object.put("list",integers);//null
object.put("null",null);
System.out.println(object);
}
在上述代碼中,首先建立一個(gè) JSON 對象,然后依次添加字符串,整數(shù),布爾值以及數(shù)組,最后將其打印為字符串。 輸出結(jié)果如下:
{"boolean":true,"string":"string","list":[1,3],"int":2}
解碼
從 JSON 對象到 Java 變量的解碼過程如下:
public voidtestJson2() {
JSONObject object=JSONObject
.parSEObject("{\"boolean\":true,\"string\":\"string\",\"list\":[1,\"int\":2}");//string
String s = object.getString("string");
System.out.println(s);//int
int i = object.getIntValue("int");
System.out.println(i);//boolean
boolean b = object.getBooleanValue("boolean");
System.out.println(b);//list
List integers = JSON.parseArray(object.getJSONArray("list").toJSONString(),Integer.class);
integers.forEach(System.out::println);//null
System.out.println(object.getString("null"));
}
在上例中,首先從 JSON 格式的字符串中構(gòu)造一個(gè) JSON 對象,之后依次讀取字符串,整數(shù),布爾值以及數(shù)組,最后分別打印,打印結(jié)果如下:
string2
true
1
2
3
null
JSON 對象與字符串的相互轉(zhuǎn)化
作用
JSON.parSEObject()
從字符串解析 JSON 對象
JSON.parseArray()
從字符串解析 JSON 數(shù)組
JSON.toJSONString(obj/array)
將 JSON 對象或 JSON 數(shù)組轉(zhuǎn)化為字符串
實(shí)例:
//從字符串解析JSON對象
JSONObject obj = JSON.parSEObject("{\"runoob\":\"菜鳥教程\"}");//從字符串解析JSON數(shù)組
JSONArray arr = JSON.parseArray("[\"菜鳥教程\",\"RUNOOB\"]\n");//將JSON對象轉(zhuǎn)化為字符串
String objStr =JSON.toJSONString(obj);//將JSON數(shù)組轉(zhuǎn)化為字符串
String arrStr = JSON.toJSONString(arr);
Gson的使用
由于最近需要使用Gson,而Gson和fastjson在使用上還是有所區(qū)別的,所以今天稍微試一下Gson的使用.
測試代碼如下:
importcom.google.common.reflect.TypeToken;importcom.google.gson.Gson;importcom.google.gson.JsonObject;importcom.google.gson.JsonParser;importcom.google.gson.annotations.SerializedName;importjava.util.List;/*** Created by pfliu on 2019/05/16.*/
public classGsonTest {public static voidmain(String[] args) {
Gson gson= newGson();
JsonParser parser= newJsonParser();//從json字符串拿到j(luò)ava對象并且拿到某些字段
String input = "{\"name\": \"huyanshi\",\"age\": 2}";
User user= gson.fromJson(input,User.class);
System.out.println(user.name);
System.out.println(user.age);//從json字符串拿到j(luò)son對象并且獲取某些字段
JsonObject jo =parser.parse(input).getAsJsonObject();
System.out.println(jo.get("name").getAsString());
System.out.println(jo.get("age").getAsInt());//從json字符串解析json的list//language=JSON
String i1 = "[{\"name\":\"huyanshi\",\"age\":\"12\"},{\"name\":\"huyanshi1\",\"age\":\"122\"}]";
List users = gson.fromJson(i1,new TypeToken>() {
}.getType());
System.out.println(users.toString());//新建一個(gè)json對象并添加某些字段,之后輸出字符串
JsonObject jo1 = newJsonObject();
jo1.addProperty("name","huyanshi");
jo1.addProperty("age","12");
System.out.println(jo1.toString());//將java對象或者數(shù)組轉(zhuǎn)換為json字符串
String a1 =gson.toJson(user);
String a2=gson.toJson(users);
System.out.println(a1);
System.out.println(a2);//測試注解@SerializedName,
User u = newUser();
u.name= "huyan";
u.age= 2;
System.out.println(gson.toJson(u));
}private static classUser {
@SerializedName(value= "nn")
String name;intage;
@OverridepublicString toString() {return "User{" +
"name=‘" + name + ‘\‘‘ +
",age=" + age +
‘}‘;
}
}
}
完。
總結(jié)
以上是生活随笔為你收集整理的java json 易用_Java中 Json的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么用路由器做映射如何用路由器开映射开服
- 下一篇: 消防救援窗口设置要求(公共建筑消防救援窗