zoukankan      html  css  js  c++  java
  • 测试json字符和java对象属性不一样在多个json框架下转换的表现

    package com.longge.mytest;
    
    import java.io.IOException;
    
    import org.junit.Test;
    
    import com.alibaba.fastjson.JSONObject;
    import com.fasterxml.jackson.core.JsonParseException;
    import com.fasterxml.jackson.databind.JsonMappingException;
    import com.fasterxml.jackson.databind.ObjectMapper;
    import com.google.gson.Gson;
    
    public class TestJson {
        @Test
        public void test() throws JsonParseException, JsonMappingException, IOException {
            String str = "{"id": 1,"updateBy": "zhufen_朱芬"}";
            // 使用fastjson,代码正常
            TestDto dto = JSONObject.parseObject(str, TestDto.class);
            System.out.println(dto.getId());
            
            // 使用jackson,会抛出异常,因为updateBy在java对象里没这个属性
            ObjectMapper mapper = new ObjectMapper();
            try {
                dto = mapper.readValue(str, TestDto.class);
                System.out.println(dto.getId());
            } catch (Exception e) {
                System.out.println(e.getMessage());
            }
            
            // 使用谷歌的gson,代码正常
            Gson gson = new Gson();
            try {
                dto = gson.fromJson(str, TestDto.class);
                System.out.println(dto.getId());
            } catch (Exception e) {
                System.out.println(e.getMessage());
            }
        }
        
        static class TestDto {
            private Integer id;
            
            private String test;
            
            public Integer getId() {
                return id;
            }
            public void setId(Integer id) {
                this.id = id;
            }
            public String getTest() {
                return test;
            }
            public void setTest(String test) {
                this.test = test;
            }
        }
    }

    运行结果:

    1
    Unrecognized field "updateBy" (class com.longge.mytest.TestJson$TestDto), not marked as ignorable (2 known properties: "test", "id"])
     at [Source: {"id": 1,"updateBy": "zhufen_朱芬"}; line: 1, column: 23] (through reference chain: com.longge.mytest.TestJson$TestDto["updateBy"])
    1
  • 相关阅读:
    C++笔记(2018/2/6)
    2017级面向对象程序设计寒假作业1
    谁是你的潜在朋友
    A1095 Cars on Campus (30)(30 分)
    A1083 List Grades (25)(25 分)
    A1075 PAT Judge (25)(25 分)
    A1012 The Best Rank (25)(25 分)
    1009 说反话 (20)(20 分)
    A1055 The World's Richest(25 分)
    A1025 PAT Ranking (25)(25 分)
  • 原文地址:https://www.cnblogs.com/yangzhilong/p/8482459.html
Copyright © 2011-2022 走看看