加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

使用Java的Jackson中的通用对象序列化

发布时间:2020-12-14 06:04:05 所属栏目:Java 来源:网络整理
导读:我想在字符串{“a”:1.0}中读取通用 Java对象,同时保持相同的字符串格式.但是,当我尝试时,杰克逊自动将内部表示更改为{a = 1}.换句话说,如何让以下代码打印{“a”:1.0}而不是{a = 1}?请注意,我必须将其作为Object读取(由于其他程序限制). import org.code
我想在字符串{“a”:1.0}中读取通用 Java对象,同时保持相同的字符串格式.但是,当我尝试时,杰克逊自动将内部表示更改为{a = 1}.换句话说,如何让以下代码打印{“a”:1.0}而不是{a = 1}?请注意,我必须将其作为Object读取(由于其他程序限制).
import org.codehaus.jackson.map.ObjectMapper;

public class Main {

    public static void main(String[] args) {
        try
    {
            ObjectMapper mapper = new ObjectMapper();
            Object myObject = mapper.readValue("{"a": 1.0}",Object.class);
            System.out.println(myObject.toString());            
    }
    catch (Exception e)
    {
        e.printStackTrace();
      System.err.println(e.getMessage()); 
    }
    }

}

解决方法

创建的对象将是一个地图(就像其他注释一样),因此它的toString会产生您所看到的内容,{a = 1}.要让代码打印出更接近输入值的代码,您需要使用Jackson将其写回来,例如:
System.out.println(mapper.writeValueAsString(myObject));

这给了我相信你正在寻找的东西:

{"a":1.0}

换句话说,Jackson已将您的输入字符串反序列化为任意Java对象.当你在对象上调用toString时,当然会使用它自己的toString.这可以写它喜欢的对象,包括使用Object中的方法.要重现输入字符串,您必须使用Jackson将我们的对象序列化.

(编辑:李大同)

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

    推荐文章
      热点阅读