我正在尝试使用带有简单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中解析此问题,但它无法正常工作或打印错误..
解决:
测试[] data = gson.fromJson( jsonAll.get(“tests”)。toString(),Test [] .class);
或者使用K Neeraj Lal的答案,它也有效!
答案 0 :(得分: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());
答案 1 :(得分:1)
我认为您的问题可能出现在:
Test[] data = gson.fromJson(jsonAll.toString(), Test[].class);
行,
我把它改成了
Test[] data = gson.fromJson(jsonAll.get("tests").toString(), Test[].class);
它对我有用
解析器并不知道要查看&#34;测试&#34;数组的标记