大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 Java解析json字符串的三種方法

Java解析json字符串的三種方法

更新時間:2022-04-26 11:30:10 來源:動力節點 瀏覽3774次

在本教程中,動力節點小編將告訴大家在 Java 中解析 JSON 的 3 種方法。首先,我們將看到理論信息,然后我們將看到它的實現示例。

解析 JSON 概述

大多數時候,無論數據是什么,應用程序都需要解析 JSON。有時我們想驗證 JSON 是否包含鍵或字段。

當我們在 Java 中簡單地解析 JSON 時,所有這些類型的問題和要求都可以滿足。以下是在 Java 中解析 JSON 的 3 種常用方法:

1.通過使用 org.json 庫

2.在 Java 中使用 Gson 解析 JSON

3.使用 JsonPATH 解析

讓我們詳細討論每種方式。假設我們有下面給出的 JSON,并且我們想要檢索pageName、pagePic和post_id的值。

{
	"pageInfo": {
		"pageName": "Codezup Homepage",
		"logo": "https://codezup.com/logo.jpg"
	},
	"posts": [{
		"post_id": "987456123",
		"actor_id": "101",
		"author_name": "Robert",
		"post_title": "How to parse JSON in Java by codezup.com",
		"comments": [],
		"time_of_post": "5689563245"
	}]
}

使用 org.json 解析 JSON 數據

為了使用org.json解析 JSON 數據,我們需要在下面提到 maven 依賴項。如果您正在處理 Maven 項目,則將其包含在您的 pom.xml 文件中,否則,您可以下載該 jar 并將其添加到您的項目類路徑中。

<dependency>
   <groupId>org.json</groupId>
   <artifactId>json</artifactId>
   <version>20210307</version>
</dependency>

以下是解析 JSON 的分步信息以及編碼示例。

首先,我們使用JSONObject類將 JSON 字符串轉換為 JSON 對象。

如果你清楚地觀察到 JSON,那么你可以清楚地理解 pageInfo 也是一個 JSONObject,我們需要使用getJSONObject方法來獲取它。

同樣,posts 是一個 JSON 數組,所以我們需要使用getJSONArray方法來獲取它。

下面是用 org.json 解析 JSON 的完整代碼。

package com.parsejsonexample;
import org.json.JSONArray;
import org.json.JSONObject;
public class ParseJSONExample {
  private static String sampleJson = "{\"pageInfo\": {\"pageName\": \"Codezup Homepage\",\"logo\": \"https://codezup.com/logo.jpg\"},\"posts\": [{\"post_id\": \"987456123\",\"actor_id\": \"101\",\"author_name\": \"Robert\",\"post_title\": \"How to parse JSON in Java by codezup.com\",\"comments\": [],\"time_of_post\": \"5689563245\"}]}";
  public static void main(String[] args) {
    JSONObject obj = new JSONObject(sampleJson);
    String pageName = obj.getJSONObject("pageInfo").getString("pageName");
    System.out.println(pageName);
    JSONArray arr = obj.getJSONArray("posts");
    for (int i = 0; i < arr.length(); i++) {
      String post_id = arr.getJSONObject(i).getString("post_id");
      System.out.println(post_id);
    }
  }
}

輸出

Codezup Homepage
987456123

現在下一步是使用 Gson Java 庫解析 JSON。

使用 Gson 解析 JSON

為了使用Gson解析 JSON 數據,如果我們正在處理 Maven 項目,我們需要在 pom.xml 中添加提及依賴項。否則,我們需要在項目類路徑中手動添加一個jar。

<dependency>
   <groupId>com.google.code.gson</groupId>
   <artifactId>gson</artifactId>
   <version>2.8.7</version>
</dependency>

下面給出了使用 Gson 解析 JSON 的完整代碼,以及我們在 org.json 中使用的類似概念。

package com.parsejsonexample;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
public class ParseJSONExample {
  private static String sampleJson = "{\"pageInfo\": {\"pageName\": \"Codezup Homepage\",\"logo\": \"https://codezup.com/logo.jpg\"},\"posts\": [{\"post_id\": \"987456123\",\"actor_id\": \"101\",\"author_name\": \"Robert\",\"post_title\": \"How to parse JSON in Java by codezup.com\",\"comments\": [],\"time_of_post\": \"5689563245\"}]}";
  public static void main(String[] args) {
    JsonObject jsonObject = new JsonParser().parse(sampleJson).getAsJsonObject();
    String pageName = jsonObject.getAsJsonObject("pageInfo").get("pageName").getAsString();
    System.out.println(pageName);
    JsonArray arr = jsonObject.getAsJsonArray("posts");
    for (int i = 0; i < arr.size(); i++) {
      String post_id = arr.get(i).getAsJsonObject().get("author_name").getAsString();
      System.out.println(post_id);
    }
  }
}

輸出

Codezup Homepage
Robert

如果您想了解 Gson 在應用程序中的更多用法,那么您可以查看我們如何使用 Gson 將 JSON 轉換為 Map。

這兩個(org.json 和 Gson)是開發人員用來解析 JSON 的最常用方法。這兩種方法需要在訪問我們從 JSON 中選擇的屬性之前將 JSON 完全反序列化為 Java 對象。

但是如果不想反序列化怎么辦?還有其他解析 JSON 的解決方案嗎?

是的,我們可以利用 JsonPATH 庫,它更像是 JSON 的 XPath,我們可以用它來遍歷 Json 對象。讓我們在下一節中使用 JsonPATH 檢查解決方案。

使用 JsonPATH 的解決方案

要使用下面的這個庫,需要給定 maven 依賴項,或者您可以下載 JAR 并將其手動添加到項目類路徑中。

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

下面是使用 JsonPATH 庫解析 JSON 的完整編碼示例。

package com.parsejsonexample;
import com.jayway.jsonpath.JsonPath;
public class ParseJSONExample {
  private static String sampleJson = "{\"pageInfo\": {\"pageName\": \"Codezup Homepage\",\"logo\": \"https://codezup.com/logo.jpg\"},\"posts\": [{\"post_id\": \"987456123\",\"actor_id\": \"101\",\"author_name\": \"Robert\",\"post_title\": \"How to parse JSON in Java by codezup.com\",\"comments\": [],\"time_of_post\": \"5689563245\"}]}";
  public static void main(String[] args) {
    String pageName = JsonPath.read(sampleJson, "$.pageInfo.pageName");
    System.out.println(pageName);
    Integer posts = JsonPath.read(sampleJson, "$.posts.length()");
    for (int i = 0; i < posts; i++) {
      String post_id = JsonPath.read(sampleJson, "$.posts[" + i + "].author_name");
      System.out.println(post_id);
    }
  }
}

輸出

Codezup Homepage
Robert

結論

這就是本教程的全部內容。希望您能夠理解在 Java 中解析 JSON 的所有三種非常基本的方法。

但是,org.json 和 Gson 需要在遍歷實際對象之前將 JSON 反序列化為 Java 對象。但是也有使用 XPath 概念的 JsonPATH 方法。如果您想了解更多相關知識,不妨來關注一下動力節點的Java在線學習,里面的課程內容更加全面,適合小白學習,希望對大家能夠有所幫助。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 国产级a爱做片免费观看 | 亚洲国产精品线播放 | 日日摸夜夜嗷嗷叫日日拍 | 久99久爱精品免费观看视频 | 天天色综合图片 | 亚洲国产欧美在线人成 | 五月四房婷婷 | 国产精品久久久久久久久鸭 | 亚洲精品啪啪一区二区三区 | 色视频在线免费看 | 久久久久亚洲国产 | 中文日产国产精品久久 | 色偷偷成人网免费视频男人的天堂 | 成人精品亚洲人成在线 | 久热中文字幕在线 | 男人叼女人的痛爽视频免费 | 久热精品男人的天堂在线视频 | 中文字幕一区二区三区永久 | 亚洲成人xxx | 成人影院vs一区二区 | 久久人人澡 | 中文字幕在线免费播放 | 免费观看男女羞羞的视频网站 | 久久久综合九色合综国产 | 日韩欧美一区二区在线 | 国产美女a做受大片在线观看 | 青青青青啪视频在线观看 | 国产精品一区久久 | 四虎www成人影院观看 | sihu影院永久在线影院 | 色黄啪啪网18以下勿入 | 日日综合 | 黄页在线播放网址 | 九九免费精品视频在这里 | 九九热免费观看 | 国产精品视频一区牛牛视频 | 国产尤物福利视频一区二区 | 欧美精品久久久久久久免费观看 | 国产一区二区在线看 | 婷婷中文字幕 | 波多野结衣av1区2区3区 |