2016-08-20 18 views
0

を使用して、すべてのJSONのノードを数える取得するためには、ここで私はJSONオブジェクトがそこにあるどのように多くの数えたいと思い、私のuser.jsonどのようにジャクソンの枠組み

{ 
    "id":1, 
    "name":{ 
     "first":"Yong", 
     "last":"Mook Kim" 
    }, 
    "contact":[ 
     { 
      "type":"phone/home", 
      "ref":"111-111-1234" 
     }, 
     { 
      "type":"phone/work", 
      "ref":"222-222-2222" 
     } 
    ] 
}, 
{ 
    "id":2, 
    "name":{ 
     "first":"minu", 
     "last":"Zi Lap" 
    }, 
    "contact":[ 
     { 
      "type":"phone/home", 
      "ref":"333-333-1234" 
     }, 
     { 
      "type":"phone/work", 
      "ref":"444-444-4444" 
     } 
    ] 
} 

です。例えば、上記のjsonは、2つのjsonオブジェクトid = 1とid = 2を持っています。私のサイズ= 1

を与える

//tree model approach 
ObjectMapper mapper = new ObjectMapper();  
JsonNode rootNode = mapper.readTree(new File("user.json"));  
List<JsonNode> listOfNodes = rootNode.findParents("first"); 
System.out.println(listOfNodes.size()); 

あなたは私が間違っているのを教えていただけますか?

おかげ

+1

私は8 '{'/'}'のペアを参照しています。つまり、8個のJSONオブジェクトを意味します。 2つのオブジェクトがコンマで区切られているので、有効なJSON配列ではありません。そのため、全体で '['/']'のペアが必要になり、3つのJSON配列になります。 – Andreas

+0

このようにしてみましょう。私はid = 2の「最初の」値を求めています。 – user1459497

答えて

2

Javaコードは正しいですが、あなたのJSONファイルは無効です。 Jacksonは最初の有効な要素( "Yong")のみを解析します。

これを修正するには、最初に[を追加し、ファイルの最後に]を追加します(配列にする)。

+0

Maciejに感謝します。ときどき小さなことが無視されることがあります。私は[最初と最後に追加して、今修正しました。 – user1459497

関連する問題