2016-04-24 9 views
2

nicht parsen ich bekomme diesen fehler. java.lang.IllegalStateException: Erwartete BEGIN_OBJECT aber war STRING in Zeile 1 Spalte 44.android, kann gson json string zu java objekt

Ich weiß, es gibt ähnliche Fragen zu diesem Thema, sie haben mir einfach nicht geholfen. meine JSON-Zeichenfolge ist im richtigen Format, weil ich es in jedem JSON-Editor anzeigen kann.

es funktionierte für mich vorher mit verschiedenen json strings, bitte sag mir was ist los mit diesem.

dies ist mein Code:

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

dies das Datenobjekt java ist

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; 
      } 
     } 
    } 
} 

}

dies das Ergebnis String i zu dem Java-Objekt zu analysieren versuchen

{ 
    "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": "" 
     } 
     } 
    } 

    ] 
} 

Antwort

1

Die json Struktur, den Code zu verwenden, schaut OK aus. Vielleicht ist das Problem, dass Sie hebräische Zeichenfolge verwenden: "title": "ראשי", Und vielleicht verwenden Sie eine alte Version von Gson Glas? Wie auch immer, versuchen Sie, die hebräische Zeichenfolge in Englisch zu ändern und erneut zu prüfen. Es funktionierte auf meiner Maschine, mit Hebräisch auch.

+0

Dank der hebräischen Sprache war mein Problem. Es funktioniert gut mit nur Englisch. Welche gson Version verwendest du? – ediBersh

1

Yo ur json String scheint corrent, aber ich habe einen Zweifel auf dem Weg Ihre Daten Ursache für das Parsen nicht funktioniert auf complexe Feld Gson zu analysieren, wenn Sie einen benutzerdefinierten Deserializer sonst können Sie versuchen, unter

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