当前位置: 首页 > 知识库问答 >
问题:

嵌套对象的Gson返回null

冯通
2023-03-14

实际上,我试图在我的代码中实现如此基本的东西。我有一个json文件。然后我想读取这个json文件并将其转换为Java对象。为了处理它,我使用了gson,但不知何故,它为嵌套对象返回null。

JSON:

{
  "results": {
    "ads-result": {
      "data": [
        {
          "id": "1"
        }
      ]
    }
  }
} 

TestJSON:

@Getter
public class TestJson
{
    private ResultsData results;

    @Getter
    public static class ResultsData
    {
        @JsonProperty(value = "ads-result")
        private AdsResultData adsResult;
    }

    @Getter
    public static class AdsResultData
    {
        private List<AdApp> data;
    }

    @Getter
    public static class AdApp
    {
        private long id;
    }
}

最后,我尝试从json文件中读取它:

public static TestJson getDefaultAdResult() throws Exception
{
    String json = IOUtils.toString(
            getResourceAsStream("test.json"), StandardCharsets.UTF_8);

    return new Gson().fromJson(json, TestJson.class);
}

但是最后,当我试图到达system.out.println(resultJson.getresults().getadsresult());时,它给出了null。有什么建议吗?

共有1个答案

尹正奇
2023-03-14

你在混合Jackson和Gson的注释。

进行此更改:

// @JsonProperty(value = "ads-result") - Jackson
@SerializedName("ads-result") // Gson
private AdsResultData adsResult;
 类似资料:
  • 我有以下对象初始化。它是RestfulService类的一部分。 它在类中使用了几次,但有不同的参数。例如。 更新... 我的尝试是这样的。这种工作。然而,它现在只映射到一个通用的LinkedList。忽略对象类型。

  • 问题内容: 我有一个名为的类,该类具有一个作为参数的构造函数: 具有以下属性: 并且是我的应用程序的其他类,并具有以下构造函数: ,并且是的子类。 我想用Gson 反序列化数组,所以我写道: 以定义为: 调试时,实例具有正确的“ MainActivity”作为上下文,而其成员变量的上下文为null。 Gson 使用正确的构造函数创建了对象,但使用默认的无参数构造函数创建了实例。我怎样才能解决这个问

  • 我有一个名为PageItem的类,它有一个构造函数,该构造函数将上下文作为参数: 具有以下属性: 新闻提供者(Newsprovider)和主题(Topic)是我的应用程序的其他类,具有以下构造函数:

  • 问题内容: 我正在尝试序列化以序列化下面包含的json字符串。 我正在使用此gson调用对其进行序列化 我的班主任就是这样。 对于任何其他类变量,它都是这样。当我尝试使用上述调用时,最终会得到具有所有空值的对象。要注意的一件事是json字符串中未提供某些字段,因为不同的api调用提供了这些json字符串的不同部分。我做错了什么? 问题答案: 您提供的JSON根对象具有属性-因此,您有两个选项可以使

  • 问题内容: 我必须与API进行交互,并且响应格式(根据我的阅读)似乎结构不良。我发现一个Google 网上论坛在这里回答了一个类似的问题,但是我在实现Response类来处理Gson.fromJson时遇到了麻烦。有没有我想念的例子? 问题答案: JSON对象可以由或Javabean类表示。这是一个使用Javabean的示例。 如下使用它:

  • 有什么方法可以创建一个Gson的自定义转换器来提取字段,从而使regetfit返回appipiate POJO吗?