第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

驗(yàn)證字符串 JSON java 庫與在線 - 不同的結(jié)果

驗(yàn)證字符串 JSON java 庫與在線 - 不同的結(jié)果

慕姐8265434 2024-01-25 21:11:17
我有一個(gè)在java中驗(yàn)證字符串json的方法。我嘗試了最好的庫,如 JsonSimple、gson 和 jackson。所有這些都有相同的結(jié)果,即 json 字符串有效,下面的代碼是我的杰克遜驗(yàn)證方法。//jackson libpublic static boolean isValidJSON(final String json) throws IOException {boolean valid = true;try{    objectMapper.readTree(json);} catch(JsonProcessingException e){ valid = false;}return valid;}我希望驗(yàn)證 json 的在線網(wǎng)站對(duì)我的代碼有相同的結(jié)果。我在這些網(wǎng)站中檢查了我的字符串jsonformatter.curiousconcept.comjsonlint.comjsonformatter.org注意:我的字符串 json 實(shí)際上是無效的,但我不知道為什么代碼和站點(diǎn)結(jié)果不一樣?我的 json 字符串:{   "hasError": false,   "referenceNumber": "57050377","errorCode": 0,"count": 0,"ott": "5cd3db66e810db0b","result": {    "id": 3551,    "guilds": [{        "id": 56,        "code": "TRANSPORTATION_GUILD"    }],    "subscriptionCount": 0,    "subscribed": false,    "numOfComments": 0,    "rate": {        "rate": 0,        "rateCount": 0    },    "fullAddress": "USA",    "tags": [],    "tagTrees": [],    "active": false,    "apiToken": "b9ea8244e34bb9f8d383467ad82",    "numOfLike": 0,    "numOfDislike": 0  }  }    "id": 3551,   "ssoId": "5884675",   "apiToken": "b9ea80c804e34bb9f8d383467ad82", {   "count": 0, "ott": "2558074f8d18f49e", "result": {             "email": "pos_psp@ptest.land",     "fullAddress": "CHINA",     "tags": [],     "tagTrees": [],     "active": false,     "apiToken": "0a4a31d1fe5c457785145fe7f97bc26e",     "numOfLike": 0,     "numOfDislike": 0,     "username": "pos_psp"   } } "id": 3552, "userId": 1357729 "username": "pos_psp"
查看完整描述

2 回答

?
有只小跳蛙

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超8個(gè)贊

JSON 解析器僅讀取輸入的第一個(gè)根值。


例如,對(duì)于以下 JSON 文本,只會(huì)foo解析第一個(gè)帶有字段的對(duì)象,然后解析停止,因此它看不到其余的內(nèi)容,其余的內(nèi)容可以是任何內(nèi)容。


{

  "foo": 42

}

{

  "bar": 666

}

要驗(yàn)證 JSON 文本并驗(yàn)證不存在額外內(nèi)容,您可以使用底層 Jackson 解析器,而不是高級(jí)ObjectMapper.


public static void validateJSON(String json) throws IOException {

    JsonFactory jsonFactory = new JsonFactory();

    try (JsonParser jsonParser = jsonFactory.createParser(json)) {

        if (jsonParser.nextToken() == null)

            throw new IOException("No JSON root element");

        if (jsonParser.skipChildren().nextToken() != null) {

            JsonLocation loc = jsonParser.getTokenLocation();

            throw new IOException("Multiple JSON root elements" +

                                  " at line " + loc.getLineNr() +

                                  ", column " + loc.getColumnNr());

        }

    }

}

測試


public static void test(String json) {

    try {

        validateJSON(json);

        System.out.println("Valid");

    } catch (Exception e) {

        System.out.println("Invalid: " + e);

    }

}

test("");

test("{}");

test("{ \"foo\": 42 }");

test("{\n" +

     "  \"foo\": 42\n" +

     "}\n" +

     "{\n" +

     "  \"bar\": 666\n" +

     "}");

test(Files.readString(Paths.get("test.json")));

最后一個(gè)是讀取問題中包含 JSON 的文件。


輸出


Invalid: java.io.IOException: No JSON root element

Valid

Valid

Invalid: java.io.IOException: Multiple JSON root elements at line 4, column 1

Invalid: java.io.IOException: Multiple JSON root elements at line 29, column 4


查看完整回答
反對(duì) 回復(fù) 2024-01-25
?
暮色呼如

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超9個(gè)贊

當(dāng)你說你測試過的所有庫(jackson、gson 等)都有相同的結(jié)果時(shí),你到底是什么意思?相同的錯(cuò)誤消息、相同的異常類、相同的堆棧跟蹤?請將檢查結(jié)果發(fā)布在問題中,以便我們的同事提供更好的答案。

當(dāng)您調(diào)用問題中提到的站點(diǎn)時(shí),沒有人保證在后端您的示例 json 會(huì)由您測試過的庫之一處理,甚至沒有人保證該站點(diǎn)的后端是用Java/任何 JVM 語言,因此這些站點(diǎn)的開發(fā)人員甚至可能無法訪問這些 json 庫。

不管怎樣,每個(gè)基于或不基于java的庫都有自己的解析json對(duì)象的算法,因此錯(cuò)誤也可能略有不同。這就是你得到不同結(jié)果的原因,這沒關(guān)系。


查看完整回答
反對(duì) 回復(fù) 2024-01-25
  • 2 回答
  • 0 關(guān)注
  • 188 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)