我正试图解析一个JSON字符串,就像这样

[
   {
      "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"
   }
]

进入一个对象列表.

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

这是我正在使用的对象类.

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

        }

但这让我很沮丧

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

我该怎么修?

推荐答案

问题是你告诉Gson你有一个你喜欢的对象.你没有.你有一个你类型的对象array.你不能只是试着把结果变成那样,然后期待它神奇地工作;)

Gson用户指南》解释了如何处理这一问题:

https://github.com/google/gson/blob/master/UserGuide.md

这将起作用:

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

但这样更好:

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

Java相关问答推荐

无法在Java中使用Curve secp 256 k1验证JWT

虚拟线程似乎在外部服务调用时阻止运营商线程

Java JAR环境(JRE)是否支持模块?

如何使用Java API在Oracle ODI中运行模拟?

如何使用jooq generator将表名和列名映射为人类可读的?

Java模式匹配记录

使用java访问具体子类特定方法的最佳方法是什么?

按属性值从流中筛选出重复项

Spring Security不允许加载js

如何集成语义发布和BitBucket(Java项目)

将PNG转换为位图自定义十六进制字符串

如何使用路径过渡方法使 node 绕圆旋转?

Instancio未在日志(log)中显示测试失败消息

如何在右击时 Select 新行?

如何使用jOOQ在PostgreSQL中从枚举类型生成Java枚举

如何使JOOQ渐变脚本不重新创建表未更改的类?

在数组中查找素数时出现逻辑错误

如何用Micrometer&;斯普肯

使用Java线程进行并行编程

try 添加;按流派搜索;在Web应用程序上,但没有;I don’我不知道;It’这个代码错了