給出一個JSON像JSON屬性和值的一個子集:選擇使用JSONPath
{
"a":1,
"b":2,
"c":3,
"d":4,
"e":5
}
如何選擇出b
,d
和e
得到以下JSON?
{
"b":2,
"d":4,
"e":5
}
我希望有一個JSON對象並不僅2
,4
和5
值?
這就是我與嘗試和失敗:
$.[b,d,e]
給出一個JSON像JSON屬性和值的一個子集:選擇使用JSONPath
{
"a":1,
"b":2,
"c":3,
"d":4,
"e":5
}
如何選擇出b
,d
和e
得到以下JSON?
{
"b":2,
"d":4,
"e":5
}
我希望有一個JSON對象並不僅2
,4
和5
值?
這就是我與嘗試和失敗:
$.[b,d,e]
JSONPath不適用於wha您試圖實現:JSONPath旨在選擇值而不是鍵值對。用Jackson或任何適用於Java的JSON解析器都可以實現您想要的功能。
如果你想要去的傑克遜這裏的,會做的伎倆代碼:
String json = "{\"a\":1,\"b\":2,\"c\":3,\"d\":4,\"e\":5}";
ObjectMapper mapper = new ObjectMapper();
JsonNode tree = mapper.readTree(json);
ObjectNode node = mapper.createObjectNode();
node.set("b", tree.get("b"));
node.set("d", tree.get("d"));
node.set("e", tree.get("e"));
String result = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(node);
您的JSON路徑是正確的,而json
它的自我並非如此。它應該是:
{
"a":1,
"b":2,
"c":3,
"d":4,
"e":5
}
BTW有良好的在線測試資源,爲這些目的:http://jsonpath.com/
我已更新問題以更好地顯示我想要的內容 – user3139545
您需要修改您的JSON到(由Andremoniy說)
{
"a":1,
"b":2,
"c":3,
"d":4,
"e":5
}
,並選擇b,d,e使用此
$.b,d,e
我更新了問題以更好地顯示我想要的內容 – user3139545
JSONPath不適合那個。 –