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

使用gson将Json字符串反序列化为嵌套对象会为Java中最里面的字段提供空值

贺刚毅
2023-03-14

我正在使用Gson构建器将json字符串反序列化到我的对象。我有一个包含列表的对象,该列表包含原始字段和复杂对象。反序列化后,填充了原始字段,但所有复杂字段都为空。下面是我的JSON字符串:

{
    "branchCode": "000",
    "debitAccountName": "qwerty",
    "debitBankId": "12",
    "paymentInst": [
        {
            "amountPriority": "PC",
            "bankBranchCode": "444",
            "counterParty": {
                "beneficiaryCode": "xyz"
            },
            "creditAccNo": "998877",
            "debitCurrencyCode": "USD",
            "paymentAmount": 100,
            "MiscDetail": {
                "charge": "OUR",
                "debitCode": "000",
                "invoiceAmount": 120
            },
            "Product": {
                "productCode": "IFT"
            }
        }
    ],
    "totalUnitAmount": 100.00
}

创建object时,MiscDetails、Canterparty和product字段为null,rest设置为fine。所有的类都是非抽象的。

共有1个答案

仲高超
2023-03-14

好了,我终于找到了自己的答案。我最初没有注意到,但我对没有填充的字段使用了transiste关键字。根据定义,transiste表示不能序列化。

 类似资料:
  • 问题内容: 所有,我都有以下输出/字符串(它是JIRA API的响应): 我用于遍历元素并获取值。我在下面的“嵌套对象”示例中编写了类 http://www.javacreed.com/gson-deserialiser- example/ 我能够获得到第二级的元素值。例如:在此级别之前,我能够获得的值以及其他值。我如何获得的价值? 我应该如何构造我的解串器和类。请协助。谢谢。 问题答案: 试试这

  • 我正在尝试使用来部分地反序列化模型,因此其中一个属性被读取为包含原始JSON的字符串。 示例代码 应该生成模型,其中属性将原始JSON中的Info对象作为字符串包含: 它不能开箱即用并抛出异常: System.Text.Json.JsonException:--- 到目前为止我尝试了什么: 并将其应用于模型中 并将选项添加到 尽管如此,它还是抛出了相同的异常: System.Text.Json.J

  • 问题内容: 我有以下字符串 我想反序列化一个类的对象 我正在使用python 2.6和2.7 问题答案:

  • 问题内容: 如何将上述字符串反序列化为java对象。 我正在使用的类是 问题答案: @基达 我假设您可以控制JSON输入字符串的创建方式。我认为JSON字符串格式不正确,无法对地图类型进行默认的GSON反序列化。 我已经修改了输入字符串供您考虑,这将导致非null的LocalLocationId 如果我对输入字符串的假设不正确,请发表评论。 编辑1:由于无法修改输入,请考虑编写自定义解串器。以下是

  • 问题内容: 我有一些具有各种属性的JSON,其中大多数是简单数据类型。但是,我在JSON中有一个属性,当我将其反序列化为C#类时,我只需要将其反序列化为字符串即可。 JSON示例: 除了将是有效的JSON对象外,“ json”对象没有任何设置结构。 因此,在上面的示例中,“ json”的值是一个JSON对象-但是当它反序列化时,我需要将它作为字符串。 因此,如果我的C#类是: 然后,如果我使用:

  • 问题内容: 我有以下类,它是由Jackson映射的(简化版): 在某些情况下,服务器会返回,然后我想将name设置为空的Java String。 是否有任何Jackson注释,或者如果属性为,我应该只检查getter中的null并返回空字符串? 问题答案: 您可以在默认构造函数中或声明时进行设置: 要么