2016-04-24 100 views
2

我得到这个错误。 java.lang.IllegalStateException:期望的BEGIN_OBJECT,但在STRING的第1行第44列。android,gson不能解析json字符串到java对象

我知道在这个问题上有类似的问题,他们只是没有帮助我。 我的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": "" 
     } 
     } 
    } 

    ] 
} 

回答

1

JSON的结构代码看起来不错。 也许问题是你使用的是希伯来字符串:"title": "ראשי", 也许你正在使用旧版本的Gson jar? 无论如何,尝试将希伯来语字符串更改为英文字符并重新检查。 它在我的机器上工作,也有希伯来文。

+0

谢谢希伯来语是我的问题。它工作正常,只有英文。你使用的是什么版本的gson? – ediBersh

1

Yo乌尔JSON字符串似乎corrent但我对你的分析你的数据造成GSON解析的配合物场不会工作的方式无疑,除非您使用自定义解串器,否则,你可以尝试使用下面

Gson gson = new Gson(); 
Type type = new TypeToken<ArrayList<LinksEntity>>(){}.getType() 
data = gson.fromJson(result.get("links").getAsJsonArray(), type);