亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 javax.json.stream.JsonParser 和 Java 流解析的 JSON

使用 javax.json.stream.JsonParser 和 Java 流解析的 JSON

慕無忌1623718 2023-03-02 15:24:29
我正在使用 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)有沒有辦法解決這個問題,除了增加一個額外的步驟來去掉引號?
查看完整描述

1 回答

?
料青山看我應如是

TA貢獻1772條經驗 獲得超8個贊

問題是getObjectStream()只是將元素迭代為s,這會丟失第一種方法中的JsonValue鍵入方法。JsonObject最大的區別在于您使用toString()(它只返回 后面的 json“東西” :)而不是getString()(它將那個“東西”解釋為一個字符串)。

為了取回此信息(以及類似 的方法getString()),您必須JsonValueJsonString

String value = ((JsonString) entry.getValue()).getString();

這將返回不帶引號的值。


有關他們將搜索的元素轉換為的示例,請參見此 Javadoc JsonArray

https://static.javadoc.io/javax.json/javax.json-api/1.1.0-M1/javax/json/stream/JsonParser.html


查看完整回答
反對 回復 2023-03-02
  • 1 回答
  • 0 關注
  • 232 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號