2016-04-17 9 views
0

私はspringmvcフレームワークでreponses 'json decodingを行っていて、実装としてjackson converterを使用しています。 今、ケースがあります。オブジェクトのいくつかは巨大で非常に深いレベルで、私はそれのための情報の最下位レベルをつかみたい。 jsonPathのようにフィールドに注釈を付けるなどの方法がありますか?ジャクソンはJsonPath Annotationをサポートしています

答えて

2

これを行う最も簡単な方法の1つは、 'at'関数を使用してルートを指定されたJSONノードに移動することです。

以下の例では、ルートノードをnode3に変更しました。 node3を単純なPOJOに変換する方法の例を追加しました。 POJOに変換することなく、子ノードに直接アクセスすることもできます。

private static final String JSON = "{\"node1\": {\"node2\": {\"node3\": {\"title2\":\"test\"}}}}"; 

public static void main(String []args) throws IOException { 
    ObjectMapper mapper = new ObjectMapper(); 
    JsonNode root = mapper.readTree(JSON); 

    JsonNode node = root.at("/node1/node2"); 
    System.out.println(node); 
    System.out.println("-----------------"); 
    JsonNode node3 = node.at("/node3"); 
    System.out.println(node3); 
    System.out.println(node3.asText()); 
    System.out.println("-----------------"); 
    Node result = mapper.readValue(node3.toString(), Node.class); 

    System.out.println(result); 
} 

atメソッドはnullを返さないことに注意してください。私はあなたがJSONの例を投稿してくれノードもののいくつかのアイデアを与える場合、あなたの問題のために、より適切であるあなたが無視したいとあなたが解析したいノードの答えで来ることができる

Method will never return null; if no matching node exists, 
will return a node for which {@link #isMissingNode()} returns true. 

:メソッドのjavadocから 。

関連する問題