2016-04-24 5 views
2

このエラーが発生しています。 java.lang.IllegalStateException:BEGIN_OBJECTが必要ですが、1行目の列44にSTRINGしています。アンドロイド、gsonはjsonの文字列をjavaオブジェクトにパースできません

この問題に関して同様の質問があることは知っています。 私のjson文字列は、jsonエディタで見ることができるので、正しい形式です。

これは以前私のために働いていましたが、別のjsonストリングを使っていました。

この

は私のコードです:これは、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オブジェクトに解析しようとしている結果の文字列であるオブジェクトです

Gson gson = new Gson(); 
data = gson.fromJson(result, Data3Nir.class); 

{ 
    "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構造以下のコードを使用しようとすることができウルJSON文字列はcorrentようだが、私はあなたがカスタムデシリアライザを使用しない限り、あなたのデータの原因がCOMPLEXEフィールドに文句を言わない作業を解析gsonパースのあなたの方法に疑問を持っていますOKと思われます。 おそらく問題は、ヘブライ語の文字列を使用していることです。"title": "ראשי", おそらくあなたは古いバージョンのGson jarを使用していますか? とにかく、ヘブライ文字列を英語に変更して再確認してください。 私のマシンではヘブライも使っていました。

+0

ありがとう、ヘブライ語が私の問題でした。それは英語だけで正常に動作します。何gsonバージョンを使用していますか? – ediBersh

1

ヨーそうでなければ、

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