gpt4 book ai didi

java - 如何解析这些json字符串呢? (使用gson)

转载 作者:太空宇宙 更新时间:2023-11-04 08:23:04 25 4
gpt4 key购买 nike

我有一个像这样的 json 字符串: http://pastebin.com/ckUZadwL

我正在尝试使用 gson 来解析它们。不过,我有一个问题。在新的响应中,用户元素包含通用 id 作为键,并且由于它位于内部类中,所以我不确定如何解析它。

感谢您的帮助。

以下是我构建的一些用于存储数据的类容器:

public class CometCallback
{
public int new_offset;
public Data[] data;
}

public class Data
{
public long plurk_id;
public int response_count;
public Response response;
public UserInfo user;
public String type;
public Plurk plurk;
}

public class Response
{
public String lang;
public String content_raw;
public long user_id;
public String qualifier;
public long plurk_id;
public String content;
public long id;
public String posted;
}

public class Plurk extends Response
{
public Object[] replurkers;
public int responses_seen;
public int replurkers_count;
public String replurker_id;
public int response_count;
public boolean replurkable;
public Object limited_to;
public int favorite_count;
public int is_unread;
public Object[] favorers;
public int plurk_type;
public boolean replurked;
public boolean favorite;
public int no_comments;
public long owner_id;
}

最佳答案

关于您的帖子,我有几件事要分享:

  1. 你将面临的最大问题是用户有很奇怪的json 序列化 - 它的 id 用作键。我能想到的唯一方法是使用 enableComplexMapKeySerialization GsonBuilder 的选项。那么你需要声明UsewrInfo只包含一个元素 Map<Integer, User>并声明User所有属性都映射到 id 的 bean。

  2. 我想您知道使用 gson 不需要类字段名称与 gson 中的键匹配。例如你仍然可以使用驼峰式的 newOffset 并在其中解析字段 new_offset。您只需放置 gson 注释即可 @SerializedName("new_offser") 位于字段声明上方。

  3. 以下是如何使用 gson 从 json 进行反序列化。这是非常简单:

    Gson gson = new GsonBuilder()
    .enableComplexMapKeySerialization()
    .serializeNulls()
    .setDateFormat(MY_DATE_FORMAT)
    .create();
    CometCallback cometCallback = gson.fromJson(jsonFile, CometCallback.class) ;

    我将讨论DateFormat的选项在下一节中。 serializeNulls是需要的,因为我看到属性为null值也被序列化,如 "date_of_birth": null .

  4. 关于 DateFormat - 我看到你声明public String posted;作为字符串。然而 gson 可以直接从 json 中解析日期只要您指定日期的确切格式即可为您提供字符串将会在。这是我认为您定义日期的确切格式在:

    public static final SimpleDateFormat MY_DATE_FORMAT = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z");

    现在声明这一点并将其传递到 setDateFormat(MY_DATE_FORMAT)你应该能够改变的方法您的所有日期都将被读取为日期,gson 将为您解析它们。

  5. 顺便说一下,我想你知道,但是你可以反序列化 json例如,数组到列表。只需声明相应的字段,gson 将自动存储在其中。

希望所有这些都能帮助您反序列化数据。快乐编码!

关于java - 如何解析这些json字符串呢? (使用gson),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9155764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com