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

当我尝试用GSON反序列化JSON时,我得到了空字段

赵立果
2023-03-14

要旨

{
    "some_class": "abc.def.SomeClass",
    "stuff": [
        "FOO",
        "BAR",
    ],
    "definition": {
        "values": [
            { "feature": "FOO",    "value": 1.0 },
            { "feature": "BAR",    "value": 1.0 },
        ]
    }
}
package somepackagepath;

import java.util.List;

public class SomeSpec {

  private List<FeatureValueSpec> _values;
  private List<String> _postProcessFunctions;

  public List<FeatureValueSpec> getValues() {
    return _values;
  }

  public List<String> getPostProcessFunctions() {
    return _postProcessFunctions;
  }

  public static class FeatureValueSpec {
    private String _feature;
    private float _value;

    public String getFeature() {
      return _feature;
    }

    public float getValue() {
      return _value;
    }

  }

}

反序列化对象只有null字段,即使JSON明确定义了这些字段。

共有1个答案

西门逸仙
2023-03-14

第一:数组中的JSON有两个错误。每个数组的末尾都有额外的逗号。

第二,你的模特应该像这样

public class Values
{
    private String value;

    private String feature;

    public String getValue ()
    {
        return value;
    }

    public void setValue (String value)
    {
        this.value = value;
    }

    public String getFeature ()
    {
        return feature;
    }

    public void setFeature (String feature)
    {
        this.feature = feature;
    }
}

public class Definition
{
    private Values[] values;

    public Values[] getValues ()
    {
        return values;
    }

    public void setValues (Values[] values)
    {
        this.values = values;
    }
}

public class MyPojo
{
    private Definition definition;

    private String[] stuff;

    private String some_class;

    public Definition getDefinition ()
    {
        return definition;
    }

    public void setDefinition (Definition definition)
    {
        this.definition = definition;
    }

    public String[] getStuff ()
    {
        return stuff;
    }

    public void setStuff (String[] stuff)
    {
        this.stuff = stuff;
    }

    public String getSome_class ()
    {
        return some_class;
    }

    public void setSome_class (String some_class)
    {
        this.some_class = some_class;
    }
}
 类似资料:
  • 作为我为Android开发的Xamarin Forms应用程序的一部分,我有一个Json配置文件,其中保存了一些设置,比如该应用程序是否处于调试模式,或者用户登录网站等。 然而,试图从Json文件获取此用户对象会引发上述异常,下面也可以看到完整的异常。 我试图反序列化的User和ConfigModel对象非常简单。它们可以在下面看到,以及我的Config文件的一部分,其中包含我存储在Json中的一

  • 我的代码是 此代码给出的输出为 以及如何打印所有组的开始和结束索引?

  • 问题内容: 我正在使用Netbeans。当我运行下面的程序时,我将其作为输出!怎么会? 我也尝试过解决它,但是后来我得到了 线程“主”中的异常java.lang.ClassCastException:[我无法在TopCoder.Test.main(Test.java:13)处强制转换为java.lang.Integer。Java结果:1 问题答案: 上面的工作如您所愿。 因此,看起来“ int”数

  • 问题内容: 我在反序列化以下json数组时遇到麻烦(对不起,大小): 如果将其粘贴到json-viewer中,则会得到以下结构: 现在,包含具有坐标的数组的数组具有可变大小。所以我想在Java中,整个对象应该是一个数组,其中包含数组的集合,每个数组都包含一个。就像是 但是gson不接受这一点。我收到以下错误消息: 这似乎很奇怪,因为对我来说好像不像一个数组。但这可能使我感到困惑,或多或少地迷路了…

  • 问题内容: 这是我的课 最初的一个实际上需要转换为良好的json数据。这是最初的坏人 这是我的json数据,我无法反序列化。即使更改,我仍会收到默认值 我的自定义封面 问题答案: 您可以使用json.net以显示的格式对a进行反序列化和重新序列化,只要您使用custom即可。这是必需的,因为默认情况下,对象集合在JSON数组之间进行序列化,但是在JSON中,对象集合以单个对象的紧凑形式进行序列化,

  • 我将spring MVC用于服务。通过添加依赖项,我的rest控制器自动。 依赖关系 对象 问题 问题出现在中。例如,我想向添加。以下用户-JSON良好, 但是如果我添加一个带有子活动的activity,它就会崩溃! 的确,jackson这个json,我不明白为什么。我得到以下错误..知道吗? 这里的对象与所有字段,也许与我的错误有关?

  • 问题内容: 使用Gson的方法时,可以使用某种给定类的set 方法吗? 我想这样做是因为对于目标类的每个全局变量都会进行修剪。 为此有任何GSON API注释吗? 我知道GSON提供了编写自定义序列化器/反序列化器的功能,但我想知道是否还有另一种方法可以实现此目的。 问题答案: 我实施了并在上注册了。因此,对于收到的所有String字段,Gson将使用my 反序列化该值。 下面是我的代码: …以及

  • 我尝试反序列化一个巨大的API负载。这个有效负载包含的字段比我需要的要多,因此我正在使用。但是,在某些情况下,反序列化会失败,并显示错误消息: 我找到了解决方案,建议使用 我试过这个。但这于事无补。此外,我的结果数据不是一个单一的值数组。它实际上包含两个值——因此解决方案无论如何都不会相加。 以下是反序列化的目标类。 下面是我测试它的单元测试: 这是我想要反序列化的有效负载