SORU
7 Mart 2012, ÇARŞAMBA


GSON "BEGİN_OBJECT Beklenen ama BEGİN_ARRAY" atma oldu;?

Bunun gibi bir JSON dizesini ayrıştırmak için çalışıyorum

[
   {
      "updated_at":"2012-03-02 21:06:01",
      "fetched_at":"2012-03-02 21:28:37.728840",
      "description":null,
      "language":null,
      "title":"JOHN",
      "url":"http://rus.JOHN.JOHN/rss.php",
      "icon_url":null,
      "logo_url":null,
      "id":"4f4791da203d0c2d76000035",
      "modified":"2012-03-02 23:28:58.840076"
   },
   {
      "updated_at":"2012-03-02 14:07:44",
      "fetched_at":"2012-03-02 21:28:37.033108",
      "description":null,
      "language":null,
      "title":"PETER",
      "url":"http://PETER.PETER.lv/rss.php",
      "icon_url":null,
      "logo_url":null,
      "id":"4f476f61203d0c2d89000253",
      "modified":"2012-03-02 23:28:57.928001"
   }
]

nesnelerin bir listesi.

List<channelSearchEnum> lcs = (List<channelSearchEnum>) new Gson().fromJson( jstring , channelSearchEnum.class);

İşte kullanıyorum nesne bir sınıf.

import com.google.gson.annotations.SerializedName;

public class channelSearchEnum {



@SerializedName("updated_at")
private String updated_at;

@SerializedName("fetched_at")
private String fetched_at;

@SerializedName("description")
private String description;

@SerializedName("language")
private String language;

@SerializedName("title")
private String title;

@SerializedName("url")
private String url;

@SerializedName("icon_url")
private String icon_url;

@SerializedName("logo_url")
private String logo_url;

@SerializedName("id")
private String id;

@SerializedName("modified")
private String modified;

public final String get_Updated_at() {
    return this.updated_at;
}

public final String get_Fetched_at() {
    return this.fetched_at;
}

public final String get_Description() {
    return this.description;
}

public final String get_Language() {
    return this.language;
}

public final String get_Title() {
    return this.title;
}

public final String get_Url() {
    return this.url;
}

public final String get_Icon_url() {
    return this.icon_url;
}

public final String get_Logo_url() {
    return this.logo_url;
}

public final String get_Id() {
    return this.id;
}

public final String get_Modified() {
    return this.modified;
}

        }

Ama benimle atar

com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2

Fikirler nasıl tamir etmeli miyim?

Teşekkürler!

EDİT : Senin replys için teşekkürler. Bu şekilde çalışıyor.

    Gson gson = new Gson();
    JsonParser parser = new JsonParser();
    JsonArray jArray = parser.parse(jstring).getAsJsonArray();

    ArrayList<channelSearchEnum> lcs = new ArrayList<channelSearchEnum>();

    for(JsonElement obj : jArray )
    {
        channelSearchEnum cse = gson.fromJson( obj , channelSearchEnum.class);
        lcs.add(cse);
    }

CEVAP
7 Mart 2012, ÇARŞAMBA


Sorun Gson tipi bir nesne olduğunu mu söylüyorsun. Değilsin. Senin tipin nesnelerinin bir dizisi var. Böyle sonuç deneyin çevirebilirsiniz ... ve sihirli bir şekilde işe;) bekliyoruz

Gson Kullanım kılavuzunu bu ile başa çıkmak için nasıl Açıklar:

https://sites.google.com/site/gson/gson-user-guide

Bu çalışır:

channelSearchEnum[] enums = gson.fromJson(yourJson, channelSearchEnum[].class);

Ama bu daha iyi

Type collectionType = new TypeToken<Collection<channelSearchEnum>>(){}.getType();
Collection<channelSearchEnum> enums = gson.fromJson(json, collectionType);

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Alexander Johnson

    Alexander Jo

    26 Temmuz 2008
  • girleffect

    girleffect

    20 Mayıs 2008
  • Machinima

    Machinima

    17 Ocak 2006