我收到此错误。 java.lang.IllegalStateException:预期为BEGIN_OBJECT但在第1行第44列为STRING。
我知道在这个问题上有类似的问题,他们只是没有帮助我。 我的json字符串格式正确,因为我可以在任何json编辑器中查看它。
之前我用不同的json字符串对我有用,请告诉我这个错误是什么。
这是我的代码:
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;
}
}
}
}
}
这是我试图解析为java对象的结果字符串
{
"links": [
{
"link": {
"title": "ראשי",
"link_place_in_list": "1",
"web_link": "http://app.bsn.co.il/node/9058",
"web_link_icon": {
"src": "http://bsn.co.il/sites/default/files/7b258ff5-819c-4de4-a6c9-482ecc847a0a.Png",
"alt": ""
}
}
}
]
}
答案 0 :(得分:1)
你的json字符串看起来很正确,但我对你解析数据的方式有疑问导致gson解析不能在complexe字段上工作,除非你使用自定义deSerializer,否则你可以尝试使用下面的代码
Gson gson = new Gson();
Type type = new TypeToken<ArrayList<LinksEntity>>(){}.getType()
data = gson.fromJson(result.get("links").getAsJsonArray(), type);
答案 1 :(得分:1)
json结构看起来不错。
也许问题是你使用的是希伯来字符串:"title": "ראשי",
也许你正在使用旧版本的Gson jar?
无论如何,尝试将希伯来语字符串更改为英语字符串并重新检查。
它也在我的机器上工作,也有希伯来语。