大战熟女丰满人妻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在線學習,里面的課程內容更加全面,適合小白學習,希望對大家能夠有所幫助。

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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 国产在线麻豆一区二区 | 欧美日韩亚洲精品国产色 | 精品国产亚一区二区三区 | 日日摸夜夜摸狠狠摸日日碰夜夜做 | 天天干夜夜操 | 天天射天天 | 日本亚洲欧美美色 | av中文字幕在线 | 四虎影视在线影院在线观看 | 亚洲另类视频 | 毛片免费的 | 99久久精品无码一区二区毛片 | 91一区二区在线观看精品 | 67194在线午夜亚洲 | 日日日日日日bbbbb视频 | 狼狼色丁香久久女婷婷综合 | 国产成人一区在线播放 | 亚洲免费区 | 日本中文字幕视频在线看 | 99久久精品免费看国产高清 | 欧美一级毛片日韩一级 | 男人在线影院 | 一级特黄aaa大片 | 夜夜夜操 | 亚洲小视频在线播放 | 我就色色综合网 | 91九色麻豆| 久久精品国产99久久6动漫欧 | 国产一区精品在线 | 国产精品人成在线播放新网站 | 开心久久婷婷综合中文字幕 | 国产精品欧美日韩一区二区 | 亚洲国产网 | 日本一区二区三区精品 | 欧美成人性色生活片天天看 | 久久免费视频6 | 亚洲综合激情六月婷婷在线观看 | 久久天天躁狠狠躁夜夜躁 | 欧美国产日韩一区二区三区 | 最新亚洲国产有精品 | 日日摸日日碰夜夜爽久久 |