2 回答

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超3個(gè)贊
另一位海報(bào)已經(jīng)指出了杰克遜圖書館,但我想補(bǔ)充一下我的想法:
Jackson 能夠?qū)?a String
(或任何其他幾個(gè) I/O 源)直接解析為JsonNode
:
String json = backEndProvider.fetch(); // example call JsonNode node = new ObjectMapper().readTree(json);
然后,您可以JsonNode
使用其.get()
方法訪問結(jié)果的子項(xiàng):
JsonNode child = node.get("childKey");
此外,可以使用多種轉(zhuǎn)換方法訪問終端值。例如,如果您知道child
是文本,則可以child
通過以下方式獲取 的值:
String childValue = child.asText();
另請參閱這篇 Baeldung 文章。
從這里,您可以將用戶的輸入字符串(比如Employee.details.referenced[0].type
)解析為鍵數(shù)組(例如["Employee", "details", "referenced[0]", "type"]
)并遞歸訪問您的根元素,直到您獲取足夠的值,并在每個(gè)階段檢查鍵是否為數(shù)組訪問操作。如果您沒有任何類型信息,則需要從您的參考解析器返回 aJsonNode
或 an 。Object
對于諸如 之類的數(shù)組訪問,referenced[0]
請注意ArrayNode
inhertitsObjectNode
及其方法被覆蓋以使用.get()
int
請注意,上面的解決方案與 Jackson 的XmlMapper
.
添加回答
舉報(bào)