Java中的JSON到对象转换[重复]
Posted
技术标签:
【中文标题】Java中的JSON到对象转换[重复]【英文标题】:JSON to Object conversion in Java [duplicate] 【发布时间】:2020-11-07 06:24:37 【问题描述】:让我们举个例子,我的对象 Person 在下面有 2 个属性
public class Person
String name;
Integer age;
//getters and setters
但是 jsonaray 包含超过 2 个属性
[
"name": "ab",
"age": 18,
"c": "dc",
"d": "ef"
]
这里有额外的元素 c 和 d。我可以将该 jsonarray 转换为设置人员对象吗?
【问题讨论】:
你使用的是哪个 json 库? 另外,你想让多余的元素 c 和 d 发生什么? 要忽略 c 和 d 吗? 顺便说一句,您的 JSON 无效。 "d":"ef" 后面不能有"," 你为什么不试试呢? 【参考方案1】:你有多种选择
-
编写 JSON 代码解析你自己(我希望这不是这里的期望)。
使用可用的框架/JSON 解析器库。
一个这样的框架是jackson。你可以实现你所需要的如下
public static void main(String[] args) throws Exception
//Step 1. Create and set properties of ObjectMapper.
// You need FAIL for unknow properties false for your case
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
String jsonStr =
"name": "ab",
"age": 18,
"c": "dc",
"d": "ef"
;
try
//Step 2: call mapper to convert it to your class
Person person = mapper.convertValue(jsonStr, Data.class);
catch(IllegalArgumentException e)
//log error
【讨论】:
【参考方案2】:由于我们不知道您使用的是哪个库,我会继续假设您使用的是最常见的库 - Jackson。
在 Person
类上使用 @JsonIgnoreProperties(ignoreUnknown = true)
注释。
此注释允许您忽略 JSON 中未映射到 POJO 中的字段的任何字段。
【讨论】:
以上是关于Java中的JSON到对象转换[重复]的主要内容,如果未能解决你的问题,请参考以下文章