2016-04-24 99 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);