2017-01-15 2 views
0

JavaクラスのJacksonStreamExampleというjson-simpleライブラリを使用して、次のJSONファイルhttp://pastebin.com/Mb5E6Ewfを解析しています。私はJSONオブジェクトと、その中に次のような構造を持つ6つのJSONオブジェクトの配列を持って、このJSONファイルで JSON構文解析中に特定のキーのJSONオブジェクト内でJavaを検索する方法

{"cells": [{object with name START},{object with name END},{object with name ACTIVITY 1},{object with name ACTIVITY 2},{object with name link},{object with name link}]} 

私はwi_name:STARTのためにこれらの6つのJSONオブジェクトの内部で検索し、これのwi_displayNameを取得したいです私のコードでは、これらの6つのJSONオブジェクトのすべてのwi_nameキーをイテレータで取得するだけです。コードを修正する方法を教えてください。

これは私のJavaクラスのコードです:

package jsontoxml; 

import java.io.*; 

import org.json.simple.parser.JSONParser; 
import org.json.simple.*; 
import java.util.*; 


public class JacksonStreamExample { 

    public static void main(String[] args) { 
     JSONParser parser = new JSONParser(); 
    try { 
     Object obj = parser.parse(new FileReader("text.json")); 
     JSONObject jsonObject = (JSONObject) obj; 

     JSONArray cells = (JSONArray) jsonObject.get("cells"); 
     Iterator<JSONObject> iterator = cells.iterator(); 
     while(iterator.hasNext()){ 

      System.out.println(iterator.next().get("wi_name")); 

     } 

    } catch (Exception e) { 

     e.printStackTrace(); 

    } 

    } 

} 

、出力は以下の通りです:それは非常に不足しているため、

START 
END 
ACTIVITY_1 
ACTIVITY_2 
null 
null 

答えて

0

私はこの方法で私のコードを変更することで、私の問題を解決しました:

while(iterator.hasNext()){ 
     JSONObject jsonObject2 = (JSONObject) iterator.next(); 
     if(jsonObject2.get("wi_name").equals("START")){ 
       System.out.println(jsonObject2.get("wi_displayName")); 
     } 
    } 
1

トラバースJSON org.json APIを使用すると、通常は少し厄介ですすべての快適機能はここにあります:

while(iterator.hasNext()){ 
    JSONobject current = iterator.next(); 
    if(current.get("wi_name") != null && current.get("wi_name").equals("START")) { 
    // maybe do some null- and/or empty-checks here or what ever you want with the data 
    System.out.println(current.get("wi_displayName"));     
    }; 
} 

関連する問題