我正在使用 Java streams 解析從 REST 服務調用接收到的一些 JSON JsonParser.getObjectStream(),并過濾特定值,但從未得到我期望的匹配項。深入挖掘,我發現返回的字符串值在開頭和結尾包含額外的雙引號。這里有一些代碼來說明。首先,我展示了獲取值的“直接”方法,然后是流方法。package com.company.jsonptest;import java.io.StringReader;import javax.json.Json;import javax.json.JsonObject;import javax.json.stream.JsonParser;public class GetStringTest { public static void main(String[] args) { System.out.println("Direct..."); JsonParser parser = Json.createParser(new StringReader(json)); parser.next(); JsonObject jsonObject = parser.getObject().asJsonObject(); String username = jsonObject.getString("firstname"); String name = jsonObject.getString("lastname"); System.out.println("firstname: " + username); System.out.println("lastname: " + name); System.out.println("Streams..."); JsonParser parser2 = Json.createParser(new StringReader(json)); parser2.next(); parser2.getObjectStream().forEach(entry -> { String key = entry.getKey(); String value = entry.getValue().toString(); String type = entry.getValue().getValueType().toString(); System.out.println(key + ": " + value + " (" + type + ")"); }); } private static String json = "{\n" + " \"firstname\": \"John\",\n" + " \"lastname\": \"Smith\"\n" + "}";}這是輸出。注意額外的引號。我將 JsonValue 類型作為額外檢查包括在內。Direct...firstname: Johnlastname: SmithStreams...firstname: "John" (STRING)lastname: "Smith" (STRING)有沒有辦法解決這個問題,除了增加一個額外的步驟來去掉引號?
使用 javax.json.stream.JsonParser 和 Java 流解析的 JSON
慕無忌1623718
2023-03-02 15:24:29