Android 使用GSON进行JSON反序列化
我从url获得以下json响应:Android 使用GSON进行JSON反序列化,android,json,parsing,gson,Android,Json,Parsing,Gson,我从url获得以下json响应: stdClass Object ( [uname] => Eamorr [phoneNumber] => 082732938293 [fname] => Steve [lname] => Hearst [sex] => M [roofSignNumber] => 230948 [vehicleReg] => 07D2892 [vehicleMake] =&g
stdClass Object
(
[uname] => Eamorr
[phoneNumber] => 082732938293
[fname] => Steve
[lname] => Hearst
[sex] => M
[roofSignNumber] => 230948
[vehicleReg] => 07D2892
[vehicleMake] => Toyota
[vehicleModel] => Avensis
[vehicleNumPassengers] => 4
[profilePic] => -1
[online] => 1
[status] =>
[picList] => Array
(
)
[lat] =>
[lng] =>
[reputation] => 0.63
[numPagesComments] => 1
[last5comments] => Array
(
[0] => stdClass Object
(
[comment] => hello5
[fromUname] => Eamorr
[profilePic] => -1
[time] => 1290254763
[id] => 23628mr28018onm647z2
)
)
)
下面是我如何进行解析的:
Gson json=new Gson();
try{
Driver driver=json.fromJson(response,Driver.class);
Log.i("json",driver.profilePic);
}catch(JsonParseException e){
Log.i("error","JsonParseException");
}
运行代码时,出现以下错误:
错误/AndroidRuntime823:java.lang.RuntimeException:不存在com.project.driver.driver$Post类的参数构造函数。为此类型向Gson注册InstanceCreator以修复此问题
我在为解析定义合适的Driver.java时遇到问题。当我省略“last5comments”字段时,一切正常,只是“last5comments”部分我遇到了麻烦
下面是Driver.java:
public class Driver {
public String uname="";
public String phoneNumber="";
public String fname="";
public String lname="";
public String sex="";
public String roofSignNumber="";
public String vehicleReg="";
public String vehicleMake="";
public String vehicleModel="";
public String vehicleNumPassengers="";
public String profilePic="";
public String online="";
public String status="";
public String[] picList;
public String lat="";
public String lng="";
public String reputation="";
public String numPagesComments="";
//having problems below this line
public Post[] last5comments;
public class Post{
public String comment="";
public String fromUname="";
public String profilePic="";
public String time="";
public String id="";
}
}
非常感谢您对定义合适的Driver.java的任何帮助
提前感谢,我通过查看以下内容解决了此问题: 关于嵌套类(包括内部类)的部分 我所要做的就是使Post对象保持静态
public static class Post{
public String comment="";
public String fromUname="";
public String profilePic="";
public String time="";
public String id="";
}
我已通过查看以下内容解决了此问题: 关于嵌套类(包括内部类)的部分 我所要做的就是使Post对象保持静态
public static class Post{
public String comment="";
public String fromUname="";
public String profilePic="";
public String time="";
public String id="";
}
对的或者通过将其移动到单独的文件而使其成为顶级类,在本例中不使用static。正确。或者通过将其移动到单独的文件而使其成为顶级类,在本例中不使用静态。