2016-04-14 4 views
1

Я пытаюсь использовать GSON fromJson() с помощью простого JSONObject, но по какой-то причине он не работает. И это вовсе не печать каких-либо стеков. Может быть, я делаю что-то действительно неправильно в моем коде и кто-то может помочь:GSON fromJson со сложным JSONObject не работает

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, и это не работает или печать ошибка ..

решаемые:

Test [] = данные gson.fromJson; (jsonAll.get ("испытание") ToString(), тест [] класс.).

Или используйте K Neeraj Lal, ответьте, это тоже работает!

+0

После пару часов, проблема в том, что мне нужно сделать это: Test [] data = gson.fromJson (jsonAll.get («tests»). toString(), Test []. class); – Otuyh

ответ

1

Это то, что вам нужно. Создайте два класса: Tests.java и Test.java.

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

Perfect. Спасибо друг! – Otuyh

1

Я думаю, что ваш профессионал я проблема может быть в: линии Test[] data = gson.fromJson(jsonAll.toString(), Test[].class);,

Я изменил его Test[] data = gson.fromJson(jsonAll.get("tests").toString(), Test[].class); и он работал на меня

Анализатор не знал, искать в «тестах» тег для массива