加入收藏 | 设为首页 | 会员中心 | 我要投稿 莱芜站长网 (https://www.0634zz.com/)- 云连接、建站、智能边缘云、设备管理、大数据!
当前位置: 首页 > 编程开发 > Java > 正文

杰克逊嵌入式Java对象的反序列化

发布时间:2020-09-25 06:26:09 所属栏目:Java 来源:互联网
导读:我必须反序列化以下json使用杰克逊图书馆进入客户类 { code:C001, city: Pune, street: ABC Road} 和类作为 class Address{ String city; String street;}class Customer{ String code; Address addr

我必须反序列化以下json使用杰克逊图书馆进入客户类

{
   "code":"C001","city": "Pune","street": "ABC Road"
}

和类作为

class Address{
    String city;
    String street;
}

class Customer{
    String code;
    Address address;
}

我已经在堆栈上找到了类似的问题
Java jackson embedded object deserialization

但答案不适用于我的情况.另外我只想使用杰克逊图书馆.

如何将此json映射到Customer对象?

解决方法

您可以在客户类的“地址”字段中添加一个 @JsonUnwrapped注释.这是一个例子:
public class JacksonValue {
    final static String JSON = "{n"
            +"   "code":"C001",n"
            +"   "city": "Pune",n"
            +"   "street": "ABC Road"n"
            +"}";

    static class Address {
        public String city;
        public String street;

        @Override
        public String toString() {
            return "Address{" +
                    "city='" + city + ''' +
                    ",street='" + street + ''' +
                    '}';
        }
    }

    static class Customer {
        public String code;
        @JsonUnwrapped
        public Address address;

        @Override
        public String toString() {
            return "Customer{" +
                    "code='" + code + ''' +
                    ",address=" + address +
                    '}';
        }
    }


    public static void main(String[] args) throws IOException {
        final ObjectMapper mapper = new ObjectMapper();
        System.out.println(mapper.readValue(JSON,Customer.class));
    }
}

输出:

Customer{code='C001',address=Address{city='Pune',street='ABC Road'}}

(编辑:莱芜站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读