2017-10-30 10 views
0

こんにちは私はJavaで新しく、質問があります。 私はJSONマークアップを解析するために、パッケージを使用していますが、次のような問題はこれです:メソッドを呼び出す方法(多分再帰的)JAVA

{ 
    "example": { 
     "subThing": "value" 
    }, 
    "anotherThing" : 0 
    ... 
} 

私はMyClass.getString("example").getString("subThing");を呼び出す場合、私はsubThingの値を取得しています。

私はこれらのgetString()をできるだけ頻繁にforループforループをプログラムでインデックス変数で呼び出す必要があります。しかし、私はする方法を知らない。

for(int i = 0; i > getCurrentState(); i++) { 
    //Here I want to call getString(); 
    //I want in round loop to call getString(); 
    //In second round loop to call getString().getString(); 
} 

申し訳ありません1週間前にjavaを使用し始めました。

編集:

私は、forループでプログラムget()および/またはgetString()を呼び出す方法を意味ですか?

+0

JSON解析にはどのパッケージを使用していますか? –

+2

'getString(" example ")'は 'String'ではないので、呼び出すことはできません。それはJSONオブジェクト(の断片)です。 – Kayaman

+0

そのインデックスはメソッドまたはオブジェクトを返すことはできません。あなたはSetを返す "keys"メソッドを持っていると仮定して生のJSONを解析し、深さの最初の検索を行います。再帰的にする必要はありません –

答えて

0

私は私が正しくあなたを理解すればわからないんだけど、あなたはここで、以下の技術を使用することができます:

import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

public class App 
{ 

    public static void main(String[] args) throws JSONException { 
     JSONObject newObj = new JSONObject("{" + 
       "\"data\": [\n" + 
       " {\n" + 
       "\"id\": 1,\n" + 
       "  \"userId\": 1,\n" + 
       "  \"name\": \"ABC\",\n" + 
       "  \"modified\": \"2014-12-04\",\n" + 
       "  \"created\": \"2014-12-04\",\n" + 
       "  \"items\": [\n" + 
       "   {\n" + 
       "    \"email\": \"[email protected]\",\n" + 
       "    \"links\": [\n" + 
       "     {\n" + 

       "     }\n" + 
       "    ]\n" + 
       "   }\n" + 
       "  ]\n" + 
       "  }\n" + 
       " ]\n" + 
       "\n" + 
       "}"); 



     JSONArray items = newObj.getJSONArray("data"); 
     for (int it = 0; it < items.length(); it++) { 
      JSONObject contactItem = items.getJSONObject(it); 
      String userName = contactItem.getString("name"); 


      JSONArray item = contactItem.getJSONArray("items"); 

      for (int i = 0; i < items.length(); i++) { 
       String email = item.getJSONObject(i).getString("email"); 
       System.out.println(email); 
      } 

      System.out.println("Name----------" + userName); 
     } 
    } 
} 

またはより良いと単純には、あなたのJSONについてJsonPath

を使用することであるだろうさこのようなスムース

String substring = JsonPath.parse(json).read("$.example.subThing", String.class); 
String anotherstring = JsonPath.parse(json).read("$.anotherThing", String.class); 
関連する問題