2016-06-22 20 views
1

次(簡体)JSONツリー構造考えてみましょう:非一意の列名とフィールドの値を取得するためにジャクソンのJsonNode.findPath(String fieldName)を使用して

{ 
     "id": "1", 
     "metaData": { 
     "name": "nestedName" 
     }, 
     "name": "rootName" 
    } 

を私はCOMではこのstuctureを置きます.fasterxml.jackson.databind.JsonNodeオブジェクト。これらの列の文字列値を取得するには、私は私のJavaコードでこの文を含めるのみ必要です

String id = jsonNode.findPath("id").textValue(); 

私だけではなく、そのシンプルさのためにこれを愛し、私のコードは、JSONを意識する必要がないことそれは構文解析しています。私は私がしたい場合は、[ルート] [名前]は、具体的けれども、私は決意ロジックのいくつかの種類を持っている必要がありますことを実現します。

私の質問は、どういうわけか、どのような "名前"を区別するか指定するために必要な論理量はどれくらいですか?私は値のリストを取得するためにJsonNode.findValues(String fieldName)を調べましたが、どの値が「名前」か、「ルート」を選択する方法を決定する方法がまだわかりません。少なくとも、根に最も近いもの。

謝罪これは重複して質問ですが、私は完全一致を見つけることができなかったので、もう一度尋ねる場合。

+0

私はそれがパスを使用することにより解決や方法を得ることができると思います。 REF:http://stackoverflow.com/questions/31733052/jsonnode-findvalue-without-searching-child-nodes –

答えて

0

あなたは「名前」を取得したい場合は、root用に.get()

jsonNode.get("id").textValue(); 

直下のノードをしたいが、あなたは

jsonNode.findPath("metaData").findPath("name").textValue(); 
ような何かを行うことができますあいまいさに問題がある場合

しかし、その後、もちろん、あなたは、スキーマについて何かを知っている必要があります知っています。

関連する問題