2016-04-14 4 views
1

単純なJSONObjectでGSON fromJson()を使用しようとしていますが、何らかの理由で動作しません。スタックトレースを全く印刷していません。多分私は私のコードでは本当に何か間違ったことだし、誰かが助けることができる:複雑なJSONObjectが動作していないGSON fromJson

JSONObject json = new JSONObject(); 

json.put("id", "1"); 
json.put("name", "Test 1"); 

JSONObject json2 = new JSONObject(); 

json2.put("id", "2"); 
json2.put("name", "Test 2"); 

JSONArray array = new JSONArray(); 
array.put(json); 
array.put(json2); 

JSONObject jsonAll = new JSONObject(); 
jsonAll.put("tests", array); 

Gson gson = new Gson(); 

Test[] data = gson.fromJson(jsonAll.toString(), Test[].class); 

そして、私のテストクラスを:

public class Test { 

    public String id; 

    public String name; 

    public Test(String id, String name){ 
     this.id = id; 
     this.name = name; 
    } 

} 

私は、Androidでこれを解析しようとしている、そしてそれは働いていませんか、印刷エラーが..

解決:

試験[]データ= gson.fromJson(。。jsonAll.get( "試験")のtoString()、試験[]クラス)。

またはK Neeraj Lalの回答を使用して、それも働いている!

+0

した後は、「テスト」タグに見て知りませんでした数時間、問題は私がこれを行う必要があるということです: Test [] data = gson.fromJson(jsonAll.get( "tests")。toString()、Test []。 – Otuyh

答えて

1

これはあなたがしなければならないことです。 Tests.javaTest.javaの2つのクラスを作成します。

Tests.java

public class Tests { 
    List<Test> tests; 

    public List<Test> getTests() { 
     return tests; 
    } 

    public void setTests(List<Test> tests) { 
     this.tests = tests; 
    } 
} 

Test.java(あなたのテストクラス)今

public class Test { 

    public String id; 

    public String name; 

    public Test(String id, String name) { 
     this.id = id; 
     this.name = name; 
    } 

    public String getId() { 
     return id; 
    } 

    public void setId(String id) { 
     this.id = id; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 
} 

次のようにデータを解析するGsonを使用し、

Tests data = new Gson().fromJson(jsonAll.toString(), Tests.class); 
    Log.e("Parsed Data", data.getTests().toString()); 
+0

パーフェクト。ありがとう! – Otuyh

1

あなたのプロblemはであるかもしれない:私は Test[] data = gson.fromJson(jsonAll.get("tests").toString(), Test[].class);にそれを変更し、それが私のために働いた

Test[] data = gson.fromJson(jsonAll.toString(), Test[].class);ライン

パーサが配列

関連する問題