【发布时间】:2011-02-14 16:32:15
【问题描述】:
我想将字符串 {"a": 1.0} 作为通用 Java 对象读取,同时保持相同的字符串格式。但是,当我尝试时,Jackson 会自动将内部表示更改为 {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());
}
}
}
【问题讨论】:
-
这对我来说没有意义。对象没有键“a”的任何属性,那么如何读取它呢?你不需要用这个属性创建一个类吗?
-
也许他假设 Jackson 以某种方式通过心灵感应计算出预期的类型......实际发生的是 Object.class 类型对 Jackson 进行了特殊处理:它将创建到 Maps、Lists 和包装器的“自然”映射类型(显然都是对象)