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ş:
"Dalvik format Dönüştürme harici ...
İletişim atma "pencereyi simge bo...
&; mesaj herhangi bir modülü yüklemek ...
numarasını: ÖNEMLİ: kullanıcı "is...
HTTP POST Hata Verir: 417 "Beklen...