我的目標是讀取JSON文件並理解所有值的位置,以便當我遇到相同的JSON時,可以輕鬆讀取所有值。我正在尋找一種方法來返回一個列表,其中包含所有到每個數據值的路徑,格式爲Jayway JsonPath。如何從JSON字符串中獲取所有JSON路徑的值列表?
例JSON:
{
"shopper": {
"Id": "4973860941232342",
"Context": {
"CollapseOrderItems": false,
"IsTest": false
}
},
"SelfIdentifiersData": {
"SelfIdentifierData": [
{
"SelfIdentifierType": {
"SelfIdentifierType": "111"
}
},
{
"SelfIdentifierType": {
"SelfIdentifierType": "2222"
}
}
]
}
}
理想我想採取JSON作爲一個字符串,做這樣的事情:
String json = "{'shopper': {'Id': '4973860941232342', 'Context': {'CollapseOrderItems': false, 'IsTest': false } }, 'SelfIdentifiersData': {'SelfIdentifierData': [{'SelfIdentifierType': {'SelfIdentifierType': '111'} }, {'SelfIdentifierType': {'SelfIdentifierType': '2222'} } ] } }";
Configuration conf = Configuration.defaultConfiguration();
List<String> jsonPaths = JsonPath.using(conf).parse(json).read("$");
for (String path : jsonPaths) {
System.out.println(path);
}
此代碼將打印本,這是所有的位置在JSON中的值:
$.shopper.Id
$.shopper.Context.CollapseOrderItems
$.shopper.Context.IsTest
$.SelfIdentifiersData[0].SelfIdentifierData.SelfIdentifierType.SelfIdentifierType
$.SelfIdentifiersData[1].SelfIdentifierData.SelfIdentifierType.SelfIdentifierType
那麼理想情況下,我將能夠獲取該列表並解析th使用相同的JSON對象來獲取每個值。
//after list is created
Object document = Configuration.defaultConfiguration().jsonProvider().parse(json);
for (String path : jsonPaths) {
Object value = JsonPath.read(document, path);
//do something
}
我知道我能得到一個地圖,是JSON文件的表示,但我不知道提供相同四通八達的交通網絡,以獲取所有值。如果使用JSONPath有一個簡單的方法,那很好,否則任何其他方法都是可以的。
使用任何json解析和一點遞歸它似乎不是很複雜 – njzk2