JSON解析数组和同名单个对象

2023-12-05

我需要解析来自外部源的 JSON 数据。问题是有时数据数组被发送进来,有时它作为单个对象传入,但数组和单个对象具有相同的名称。

{
  "OuterObject": {
    "Names":[
      {
      "name": "John Doe"
      },
      {
      "name": "William Watson"
      }
    ]
  }
}

但是当 JSON 数组只有一个元素时,它看起来像这样:

{
"OuterObject": {
    "Names": {
    "name": "John Doe"
    }
  }
}

我的应用程序需要能够处理其中之一,但不能同时处理两者。

这是我的 Json 解析类的样子:

@JsonRootName("OuterObject")
public class OuterObject {

    @JsonProperty("Names")
    private Names names;
    @JsonProperty("Names")
    private List<Names> namesList;

    public Names getNames() {
        return names;
    }
    public void setNames(Names names) {
        this.names = names;
    }
    public List<Names> getNamesList() {
        return namesList;
    }
    public void setNamesList(List<Names> namesList) {
        this.namesList = namesList;
    }

}

但是,列表和单个对象具有相同的 json 属性名称似乎不起作用。它似乎也不只是使用数组并将单个 json 对象解析到列表中。当数组和对象具有相同名称时,有谁知道我的应用程序可以处理 json 数组和单个 json 对象的任何方法?


您只需要使用单个字段类型List<Names>,并激活功能 ACCEPT_SINGLE_VALUE_AS_ARRAY

YourClass result = mapper.reader(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
                         .forType(YourClass.class)
                         .readValue(json);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JSON解析数组和同名单个对象 的相关文章

随机推荐

  • 什么是 WINAPI_FAMILY_ONECORE_APP?

    我正在 GitHub 上查看 Microsoft 的 OpenSSL 端口 有一个提交引起了我的注意 那就是添加Win10通用平台支持 在提交中 一个名为WINAPI FAMILY ONECORE APP出现 然而 我在搜索时并没有找到太多
  • 如何禁用来自其他域的WebService调用

    我想避免其他人访问我的网络服务 我有一个名为 WebService asmx 的 Web 服务 它托管在 www xyz com 上 我们知道我们可以访问该服务 例如http www xyz com WebService asmx 如何避免
  • 如何强制Dotnet6桌面Winforms应用程序使用appsettings.json而不是Settings.settings?

    如何强制 Dotnet6 桌面 Winforms 应用程序使用 appsettings json 而不是 Settings settings App config 如果我在 Visual Studio 2022 中创建一个新的桌面应用程序以
  • 使用 Apache POI 打开 .xlsx 文件时出现异常

    我一直在开发一个 Android 应用程序 其中我必须打开 xls 和 xlsx 文件才能进一步实现 如果是 xls 一切工作正常 但当我尝试打开 xls x 文件时 它给了我异常 下面是我的代码 请帮我解决这些异常 Override pr
  • 使用PHP数组将数据插入MYSQL

    你好 我正在尝试使用数组在 mysql 中插入数据 有人可以看看我的代码吗 我似乎无法让它工作 这是我的post php POST PHP post id somefunction title POST title body POST bo
  • java -fullversion 中的 b 表示什么?

    当我们使用java 完整版本 我们得到像 java 完整版这样的输出 1 7 0 45 b18 这是什么b18在java完整版中 我仔细阅读了一些 oracle java 文章 其中指出它表示构建版本 那么这个构建版本应该是什么 我还看到一
  • 集合如何对元素类型使用隐式转换?

    在工作的同时这个问题 我提出了以下问题 考虑两个方法定义 def foo T lt Ordered T s Seq T s sorted def foo T
  • 减小 .png 文件的大小是否会对内存中的位图产生影响

    我正在用大量的PNG图片编写游戏 一切都很好 比我添加新活动WebView并出现内存不足的情况 之后我做了一些实验 用刚刚完全填充一些颜色的图像替换游戏 PNG 图像 结果内存短缺问题就消失了 但我想Bitmap在内部单独保存每个像素 因此
  • 如何在代码块中启用 c++17 支持

    在 codeblocks 的 Build 或 Compiler 选项中没有 C 17 选项 只有 C 14 我如何在代码块中启用它 以便编码工具和编译器都支持它 代码 块 is not一个编译器 但有些人美化了源代码编辑器 有时也称自己为I
  • 串行队列上的dispatch_async和dispatch_sync之间的区别?

    我创建了一个像这样的串行队列 dispatch queue t serialQueue dispatch queue create com example name DISPATCH QUEUE SERIAL 有什么区别dispatch a
  • 如何按到给定点的距离对点列表进行排序?

    我有一个项目清单X and Y坐标 现在 有一种方法需要X and Y参数 并应返回根据给定参数从最近到最远排序的坐标列表 基本上 它看起来像这样 class Point x 0 0 y 0 0 List of points points
  • 如何在Python中的列表中获取某个内容之后的项目?

    我正在使用 textblob 来解析英文文本 这是单词列表 Get coffee and water here 我想在名为 list1 的新列表中获取项目 Get 之后的所有单词 我想在名为 list2 的新列表中获取 Get 和 here
  • Facebook FXBML 自昨天起未渲染(IFRAME Canvas)

    从昨天开始 我的应用程序没有渲染 xfbml 标签 名称和图片 我正在 Canvas Iframe 应用程序中使用新的 JavaScript SDK Firebug 在控制台中告诉我以下内容 Get http 0 channel20 fac
  • 基于另一个但具有不同 API 的 Swing 组件创建一个 Swing 组件

    我想基于现有的 Swing JComponent 创建一个新的 Swing JComponent 但使用不同的 API 换句话说 我不想扩展现有组件 因为我不希望它的 API 可供访问 这是一个例子来阐明我的需求 替代品JCheckBox显
  • C# 实现从签名文件中获取 SignedCms

    我正在使用 C CRYPT32 DLL 实现从签名的 c 程序集 dll 中提取 SignedCms 对象 用于签署 dll 的证书已过期 但内部具有有效的证书链 重要的是该证书由我都想提取的三个证书组成 private static re
  • Linq 中的动态排序依据

    我有一个访问数据库的应用程序 并且必须根据输入按不同字段对结果进行排序 这是我的排序函数 IQueryable
  • 'for_each_n' 不是 C++17 中 'std' 的成员

    我有一小段代码std for each n环形 我尝试在内置上运行它Coliru使用以下命令编译 GCC C 17 g std c 1z O2 Wall pedantic pthread main cpp a out 但编译器给出一个错误
  • 基础 Java:基本测验的 While 循环?

    我昨晚开始学习 Java 我正在尝试编写我的第一个代码 而不是别人向我指示它 这是一个简单的测验问题 询问用户 你认为我的狗可爱吗 如果他们回答 是 狗就会发出汪汪的声音并微笑 如果他们说 不 他就会对他们咆哮并皱起眉头 如果给出不同的答案
  • 熊猫系列中所有列表中最大的元素

    我有一个熊猫系列说 import pandas as pd a pd Series 1 2 3 4 5 6 7 8 3 334 333 4 5 3 4 我想找到所有列表中最大的元素 即 334 有什么简单的方法可以做到这一点 Option
  • JSON解析数组和同名单个对象

    我需要解析来自外部源的 JSON 数据 问题是有时数据数组被发送进来 有时它作为单个对象传入 但数组和单个对象具有相同的名称 OuterObject Names name John Doe name William Watson 但是当 J