我收到以下错误:
java.lang.IllegalStateException:期望一个字符串,但是 BEGIN_OBJECT在第1行第29栏路径$ .entree [0] .photo
对我来说没有意义,因为我的json响应应该按如下方式构建:
buttonSave.setOnClickListener(){
val recKey = "????"
var record = Record(recKey, textDescription.text, textAddress.text)
mDatabase.setValue(record)
finish()
}
}
JSON数据:
import com.google.gson.annotations.SerializedName;
public class Entree {
@SerializedName("id")
public int id;
@SerializedName("photo")
public Entree.Photo photo;
public class Photo {
@SerializedName("url")
public String url;
@SerializedName("web")
public Entree.Photo.Web web;
@SerializedName("mobile")
public Entree.Photo.Mobile mobile;
public class Web {
@SerializedName("url")
public String url;
}
public class Mobile {
@SerializedName("url")
public String url;
}
}
}
你是否看到Photo是一个对象而不是我班上的字符串?那我做错了什么?
答案 0 :(得分:2)
尝试使用 $scope.getDieStatus = function(){
$http({
method : "GET",
url : "url",
}).then(function success(response) {
$scope.eventSource = [response.data];
$scope.ready = true;
}, function error(response) {
return response.statusText;
});
}
在Gson document中,它说
Gson也可以反序列化静态嵌套类。但是,Gson不能 因为它们没有args,所以自动反序列化纯内部类 构造函数还需要对包含Object的引用 在反序列化时不可用。你可以解决这个问题 通过使内部类静态或通过提供一个问题来解决问题 自定义InstanceCreator。
答案 1 :(得分:0)
实际上,你的
GSON Serializable类不正确, 对于像这样的JSON响应,
{
"entrees": [{
"id": 32,
"photo": {
"url": "4c312e9aed37a59319096a03_1.jpg",
"web": {
"url": "web_4c312e9aed37a59319096a03_1.jpg"
},
"mobile": {
"url": "mobile_4c312e9aed37a59319096a03_1.jpg"
}
}
}]
}
GSON课程将为,
public class Entree {
@com.google.gson.annotations.SerializedName("entrees")
public List<Entrees> Entrees;
public static class Web {
@com.google.gson.annotations.SerializedName("url")
public String Url;
}
public static class Mobile {
@com.google.gson.annotations.SerializedName("url")
public String Url;
}
public static class Photo {
@com.google.gson.annotations.SerializedName("url")
public String Url;
@com.google.gson.annotations.SerializedName("web")
public Web Web;
@com.google.gson.annotations.SerializedName("mobile")
public Mobile Mobile;
}
public static class Entrees {
@com.google.gson.annotations.SerializedName("id")
public int Id;
@com.google.gson.annotations.SerializedName("photo")
public Photo Photo;
}
}