gpt4 book ai didi

java - 关于 Jackson 转换 Java 数据类型

转载 作者:太空宇宙 更新时间:2023-11-04 08:05:30 25 4
gpt4 key购买 nike

有一个项目使用 Jackson,并且有一个 Java 对象 Data。在对象中,有一个属性,它也是一个对象Raw。在这个对象中,有一个属性 List<Object[]>例如:

public class Data{
Raw raw;
}

public class Raw{
List<Object[]> list;
}

如果Object[]具有数据类型:long ,我给出一个值:123,那么Jackson会将这个数据类型转换为int ,

即:如果值为 length < long && > int ,数据类型也是long ,如果length < int ,数据类型将变为 int

我使用的方法:

 byte[] bytes = writeValueAsBytes(Data), Data data = readValue(bytes, Data.class)

如何在转换时保留原始数据类型?

最佳答案

jackson 做了我认为你想要的事情:

@Test
public void testJackson() throws Exception {
List<Number> numbers = new ArrayList<Number>();
numbers.add(100L);
numbers.add(new Long(Integer.MAX_VALUE) + 1000L);
numbers.add(10.0);
ObjectMapper om = new ObjectMapper();
System.out.println(om.writeValueAsString(numbers));
List<Number> newNumbers = om.readValue(om.writeValueAsString(numbers), ArrayList.class);
System.out.println(newNumbers);
assertEquals(Integer.class, newNumbers.get(0).getClass());
assertEquals(newNumbers.get(1).getClass(), Long.class);
assertTrue(! numbers.equals(newNumbers) );
}

但是numbers不会等于newNumbers,因为100L应该是一个整数。JSON 可以处理的最大数字是 64 位 double 。

如果您像二进制图像一样进行数据序列化,那么我会将数据编码为 Base64。

关于java - 关于 Jackson 转换 Java 数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12152313/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com