我有一個(gè) JsonNode,我接受它作為端點(diǎn)的參數(shù)??雌饋?lái)像這樣:@ApiModelProperty(value = "data", example = "{}", required = true)@NotNull(message = "data cannot be null")protected JsonNode data;我想創(chuàng)建一個(gè)名為 的驗(yàn)證器@ValidJson。JsonNode 本身將確保提供給它的信息是有效的 json,所以如果我傳遞如下內(nèi)容:{"data" = "hello",},如果 后面多了一個(gè)逗號(hào)"hello",就會(huì)拋出錯(cuò)誤。但是我如何確保我沒(méi)有得到類似"Hello"JsonNode 的東西,它是有效的 json,因?yàn)槠胀ǖ?String 是有效的 json 表示形式?我首先想檢查字符串是否只是字母數(shù)字,如果是,那么我會(huì)認(rèn)為它無(wú)效,但顯然有人可以傳遞一個(gè)帶有符號(hào)的字符串,那就沒(méi)問(wèn)題了。我能想到的最好的解決方案是檢查第一個(gè)和最后一個(gè)字符分別是{和},JsonNode 會(huì)處理其余的事情。但我對(duì) 的了解還不夠JsonNode,所以也許這里有人有更好的主意?編輯:為了更具體地表達(dá)我想要的,這里有幾個(gè)例子:JsonNode 會(huì)處理不正確的 Json。我想對(duì)我獲取的數(shù)據(jù)進(jìn)行一些更嚴(yán)格的驗(yàn)證。我不想接收任何類型的 Json,我想要“真正的”、可序列化的 json,這就是我們所說(shuō)的 json 時(shí)所指的。如果用戶傳遞一個(gè)如下所示的字符串:"Hello" "Hello world" "I'm just a random String that isn't in a key:value structure"等等,我想拋出一個(gè)錯(cuò)誤并詢問(wèn)他們以 key:value 結(jié)構(gòu)格式化的 Json,例如:{ "key": "value"}我正在考慮檢查第一個(gè)和最后一個(gè)字符串值是否分別為{和},正如我在評(píng)論中提到的那樣,但我認(rèn)為這太“hacky”,也許有更好的方法。
2 回答

繁花不似錦
TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超4個(gè)贊
Jackson 旨在將 JSON 轉(zhuǎn)換為 Java 對(duì)象。盡管您的用例可以工作,但它很可能不是很有幫助。
如果你真的想使用 JsonNode,Jackson 已經(jīng)檢查它是否是正確的 JSON,否則它會(huì)立即拋出異常,因?yàn)樗鼰o(wú)法將其解析為 JsonNode。
如果你想要一個(gè)JSON 對(duì)象,你可以簡(jiǎn)單地使用 aMap<String, Object>
而不是JsonNode。這將處理鍵值部分。
添加回答
舉報(bào)
0/150
提交
取消