2016-10-13 58 views
2

給出一個JSON像JSON屬性和值的一個子集:選擇使用JSONPath

{ 
    "a":1, 
    "b":2, 
    "c":3, 
    "d":4, 
    "e":5 
} 

如何選擇出bde得到以下JSON?

{ 
    "b":2, 
    "d":4, 
    "e":5 
} 

我希望有一個JSON對象並不僅245值?

這就是我與嘗試和失敗:

$.[b,d,e] 
+0

JSONPath不適合那個。 –

回答

2

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); 
1

您的JSON路徑是正確的,而json它的自我並非如此。它應該是:

{ 
"a":1, 
"b":2, 
"c":3, 
"d":4, 
"e":5 
} 

BTW有良好的在線測試資源,爲這些目的:http://jsonpath.com/

+0

我已更新問題以更好地顯示我想要的內容 – user3139545

0

您需要修改您的JSON到(由Andremoniy說)

{ 
"a":1, 
"b":2, 
"c":3, 
"d":4, 
"e":5 
} 

,並選擇b,d,e使用此

$.b,d,e 
+0

我更新了問題以更好地顯示我想要的內容 – user3139545