中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在Java中使用JSON

發布時間:2021-01-18 14:32:46 來源:億速云 閱讀:160 作者:Leah 欄目:開發技術

這篇文章將為大家詳細講解有關如何在Java中使用JSON,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

1. 常用的JSON轉換

 JSONObject 轉 JSON 字符串

JSONObject json = new JSONObject();
jsonObject.put("name", "test");
String str = JSONObject.toJSONString(json);

JSON字符串轉JSON

String str = "{\"name\":\"test\"}";
JSONObject json = JSONObject.parseObject(str);

實體類轉JSON

Test test = new Test();
test.setName("test");
String testStr = JSONObject.toJSONString(test);
JSONObject json = JSONObject.parseObject(testStr);

Map轉JSON

JSONObject json = JSONObject.parseObject(JSON.toJSONString(map));

JSON轉Map

Map jsonToMap = JSONObject.parseObject(jsonObject.toJSONString());

2. 將多個JSON合并一個

JSONObject totalJSON = new JSONObject();
totalJSON.putAll(json1);
totalJSON.putAll(json2);

json1,json2 為JSONObject。 最終的代碼格式:

{
 json1:{},
 json2:{}
}

3.JSON拆分

不同的需求有不同的做法,以下提供兩種解決思路

  • 定義兩個或多個JSON進行put和remove 比如明確需要哪些字段的時候可以定義一個數組用來存放key信息。存放和刪除的時候只需要遍歷數組就可以。

  • 遍歷JSON,獲取key,value再重新put

4.JSON遍歷

定義一個工具類,獲取key和value

if(object instanceof JSONObject) {
  JSONObject jsonObject = (JSONObject) object;
  for (Map.Entry<String, Object> entry: jsonObject.entrySet()) {
    Object o = entry.getValue();
    if(o instanceof String) {
      System.out.println("key:" + entry.getKey() + ",value:" + entry.getValue());
    } else {
      jsonLoop(o);
    }
  }
}
if(object instanceof JSONArray) {
  JSONArray jsonArray = (JSONArray) object;
  for(int i = 0; i < jsonArray.size(); i ++) {
    jsonLoop(jsonArray.get(i));
  }
}

JSONArray遍歷的方式有很多種

for

for(int i = 0; i < jsonArray.size(); i++){
	JSONObject json = jsonArray.getJSONObject(i);
}

foreach

jsonArray.forEach(o -> {
  if (o instanceof JSONObject) {
    JSONObject json = (JSONObject) o;
  }

Iterator

JSONObject jsonObject = new JSONObject(jsonString);
Iterator iterator = jsonObject.keys();
while(iterator.hasNext()){
	key = (String) iterator.next();
	value = jsonObject.getString(key);
}

5.JSONPath

另外向大家推薦一個非常好用的工具:JSONPath。

JSONPath是一種簡單的方法來提取給定JSON的部分內容,使用方式類似于正則表達式。 GitHub地址: https://github.com/json-path/JsonPath

簡單描述下使用方法已經自己使用的案例 pom文件依賴:

<dependency>
  <groupId>com.jayway.jsonpath</groupId>
  <artifactId>json-path</artifactId>
  <version>2.2.0</version>
</dependency>

JsonPath表達式總是以與XPath表達式結合使用XML文檔相同的方式引用JSON結構。

JsonPath中的“根成員對象”始終稱為$,無論是對象還是數組。

JsonPath表達式可以使用點表示法。

這里有個表格,說明JSONPath語法元素和對應XPath元素的對比。

如何在Java中使用JSON

官方案例:

如何在Java中使用JSON 

如何在Java中使用JSON 

詳細大家還是參照官方解說。 下面是我寫的案例:

JSONArray jsonArray = JSONPath.read("$.ePrint.common..label");

如何在Java中使用JSON

需要注意的是這里的JSONArray是JSONPath的,所以導包是:net.minidev.json.JSONPath JSON格式不會變,所以可以轉換為alibaba的JSONArray:

com.alibaba.fastjson.JSONArray jsonArr = JSON.parse(jsonArray.toString());

這里要注意一點也是我踩過的坑:如果獲取一個JSONObject下有多個同名的JSONArray,那么返回的[]也是多個。要先遍歷獲取到的數據,在取其中的一個JSON塊。

關于如何在Java中使用JSON就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

景德镇市| 长白| 宜城市| 隆尧县| 扎鲁特旗| 海林市| 辉南县| 花莲县| 澄城县| 松江区| 平罗县| 上栗县| 当雄县| 卢氏县| 海晏县| 正定县| 泰州市| 广东省| 黄平县| 文化| 横峰县| 岐山县| 山东| 东城区| 和田县| 洛南县| 商洛市| 安顺市| 平江县| 阳信县| 田林县| 额济纳旗| 岳普湖县| 榆林市| 古丈县| 建瓯市| 且末县| 德清县| 巩留县| 庆元县| 若尔盖县|