前言
本文主要介紹java解析多層嵌套json數(shù)據(jù)以及字符串與JSON對象之間的相互轉(zhuǎn)換,包括:json字符串的取值,json對象與字符串的相互轉(zhuǎn)換,字符串轉(zhuǎn)化為java對象,字符串轉(zhuǎn)化為javaList列表等。
提示:以下是本篇文章正文內(nèi)容,下面案例可供參考
一、基本語法
1.格式要求
- 數(shù)據(jù)格式:JSON實(shí)際上就是鍵值對(“key” : “value”)
- 數(shù)據(jù)要求:key必須是字符串,value可以是字符串、數(shù)字、對象、數(shù)組、布爾值或null
2.value的取值語法
- 字符串,jsonObject.getString(“key”)
- 數(shù)字,jsonObject.getIntValue(“key”) 或者 jsonObject.getInteger(“key”) 與之對應(yīng)的數(shù)據(jù)類型
- 布爾值,jsonObject.getBooleanValue(“key”)
- 數(shù)組,jsonObject.getJSONArray(“key”)
- Object 對象,jsonObject.get(“key”)
- JSONObject 對象,jsonObject.getJSONObject(“key”)
3.JSON對象與字符串相互轉(zhuǎn)換
- 用的是fastjson解析,pom文件
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>2.0.0</version>
</dependency>
- Object對象轉(zhuǎn)Json字符串:JSON.toJSONString(Object object);
JSONObject jsonObject = buildJSONObject(); // 構(gòu)造的json對象
String jsonString = JSON.toJSONString(jsonObject);
- Json字符串轉(zhuǎn)Object對象:JSON.parseObject(String str);
JSONObject jsonObject = buildJSONObject(); // 構(gòu)造的json對象
String jsonString = JSON.toJSONString(jsonObject);
JSONObject jsonObject1 = JSON.parseObject(jsonString);
- 將字符串轉(zhuǎn)為JSONArray:JSON.parseArray(arrayStr);
String arrayStr = "......";
JSONArray array = JSON.parseArray(arrayStr);
- 將字符串轉(zhuǎn)為具體的單個(gè)java對象:JSON.parseObject(String text, Class clazz);
String userString = "{\"name\":\"libai\"}";
User user1 = JSON.parseObject(userString, User.class);
// 或者
User user2 = JSON.parseObject(userString).toJavaObject(User.class);
// 再或者使用JSONObject替換JSON也可,即JSONObject.parseObject(userString, User.class);
@Data
static class User {
private String name;
}
- 將字符串轉(zhuǎn)為具體的java List列表:JSONObject.parseArray(“字符串”).toJavaList(User.class);
String userListString = "[{\"name\":\"1\"},{\"name\":\"12\"}]";
List<User> userList = JSONObject.parseArray(userListString).toJavaList(User.class);
二、取值示例
1.構(gòu)造數(shù)據(jù)
構(gòu)造如下數(shù)據(jù),有字符串、數(shù)組、對象等
private static JSONObject buildJSONObject() {
// 構(gòu)造JSONObject對象
JSONObject jsonObject = new JSONObject();
// value為字符串及數(shù)字
jsonObject.put("name", "website");
jsonObject.put("age", 18);
// 構(gòu)造JSONArray對象
JSONArray jsonArray = new JSONArray();
// JSONArray里面有JSONObject對象
JSONObject jsonArrayObject1 = new JSONObject();
jsonArrayObject1.put("name", "alibaba");
jsonArrayObject1.put("info", "www.alibaba.com");
JSONObject jsonArrayObject2 = new JSONObject();
jsonArrayObject2.put("name", "baidu");
jsonArrayObject2.put("info", "www.baidu.com");
jsonArray.add(jsonArrayObject1);
jsonArray.add(jsonArrayObject2);
// value為JSONArray對象
jsonObject.put("sites",jsonArray);
JSONObject jsonObject2 = new JSONObject();
jsonObject2.put("name", "blog.csdn.net");
// value為JSONObject對象
jsonObject.put("site", jsonObject2);
return jsonObject;
}
2.讀取數(shù)據(jù)
- 取出 website 字符串及 18 數(shù)字
System.out.println(jsonObject.get("name")); // 直接get返回的是Object對象
System.out.println(jsonObject.getString("name")); // getString返回的是字符串
System.out.println(jsonObject.getIntValue("age")); // getIntValue返回的是int類型
- 取出 blog.csdn.net,即對象里面的字符串
// 直接getJSONObject獲取到site的對象,再getString獲取name的值
System.out.println(jsonObject.getJSONObject("site").getString("name"));
- 取出 alibaba,即數(shù)組里第一個(gè)對象里面的字符串
// getJSONArray獲取sites的數(shù)組,再getJSONObject(0)獲取數(shù)組中第一個(gè)對象,再getString獲取name值
System.out.println(jsonObject.getJSONArray("sites").getJSONObject(0).getString("name"));
總結(jié)
人生沒有完滿,始終存在殘缺,自己的心地是自己的世界,活得不快樂,本質(zhì)上源于自己的無能。一個(gè)人,應(yīng)該有力量,將自己從一切沉重的、老舊的、無精打采的事物里拔出來,用不斷的嘗試、變通改變自己的境遇。文章來源:http://www.zghlxwxcb.cn/news/detail-765964.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-765964.html
到了這里,關(guān)于Java 解析多層嵌套json數(shù)據(jù)及json字符串與對象的相互轉(zhuǎn)換的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!