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到对象转换[重复]的主要内容,如果未能解决你的问题,请参考以下文章

将json转换为java对象时出错[重复]

在C#中将对象转换为JSON字符串[重复]

Json转换java [重复]

java 怎么把对象集合转换成json

将json数据转换为角度2+的对象[重复]

将自定义javascript对象转换为json [重复]