android,gson无法将json字符串解析为java对象
我得到了这个错误。 java.lang.IllegalStateException:应为BEGIN_对象,但在第1行第44列为字符串 我知道在这个问题上也有类似的问题,他们只是没有帮助我。 我的json字符串格式正确,因为我可以在任何json编辑器中查看它 我以前用过不同的json字符串,请告诉我这个有什么问题 这是我的代码:android,gson无法将json字符串解析为java对象,android,json,gson,Android,Json,Gson,我得到了这个错误。 java.lang.IllegalStateException:应为BEGIN_对象,但在第1行第44列为字符串 我知道在这个问题上也有类似的问题,他们只是没有帮助我。 我的json字符串格式正确,因为我可以在任何json编辑器中查看它 我以前用过不同的json字符串,请告诉我这个有什么问题 这是我的代码: Gson gson = new Gson(); data = gson.fromJson(result, Data3Nir.class); 这是java数据对象 pub
Gson gson = new Gson();
data = gson.fromJson(result, Data3Nir.class);
这是java数据对象
public class Data3Nir {
private List<LinksEntity> links;
public void setLinks(List<LinksEntity> links) {
this.links = links;
}
public List<LinksEntity> getLinks() {
return links;
}
public static class LinksEntity {
private LinkEntity link;
public void setLink(LinkEntity link) {
this.link = link;
}
public LinkEntity getLink() {
return link;
}
public static class LinkEntity {
private String title;
private String link_place_in_list;
private String web_link;
private WebLinkIconEntity web_link_icon;
public void setTitle(String title) {
this.title = title;
}
public void setLink_place_in_list(String link_place_in_list) {
this.link_place_in_list = link_place_in_list;
}
public void setWeb_link(String web_link) {
this.web_link = web_link;
}
public void setWeb_link_icon(WebLinkIconEntity web_link_icon) {
this.web_link_icon = web_link_icon;
}
public String getTitle() {
return title;
}
public String getLink_place_in_list() {
return link_place_in_list;
}
public String getWeb_link() {
return web_link;
}
public WebLinkIconEntity getWeb_link_icon() {
return web_link_icon;
}
public static class WebLinkIconEntity {
private String src;
private String alt;
public void setSrc(String src) {
this.src = src;
}
public void setAlt(String alt) {
this.alt = alt;
}
public String getSrc() {
return src;
}
public String getAlt() {
return alt;
}
}
}
}
您的json字符串似乎正确,但我怀疑您解析数据的方式,因为除非您使用自定义反序列化程序,否则gson parse无法在complexe字段上工作,否则您可以尝试使用下面的代码
Gson gson = new Gson();
Type type = new TypeToken<ArrayList<LinksEntity>>(){}.getType()
data = gson.fromJson(result.get("links").getAsJsonArray(), type);
Gson-Gson=new-Gson();
Type Type=new-TypeToken(){}.getType()
data=gson.fromJson(result.get(“links”).getAsJsonArray(),type);
json结构看起来正常。
也许问题在于您使用的是希伯来语字符串:“title”:“ראשי”,
也许你正在使用一个旧版本的Gson-jar?
无论如何,尝试将希伯来语字符串更改为英语字符串并重新检查。
它在我的机器上运行,希伯来语也一样。谢谢,希伯来语是我的问题。它只适用于英语。您使用的是什么gson版本?
Gson gson = new Gson();
Type type = new TypeToken<ArrayList<LinksEntity>>(){}.getType()
data = gson.fromJson(result.get("links").getAsJsonArray(), type);