目前我正在做这样的事情:
public class MyObject{
public String name;
//constructor here
}
所以,如果我序列化它:
ObjectMapper mapper = new ObjectMapper();
MyObject o = new MyObject("peter");
mapper.writeValue(System.out,o);
我懂了
{"name":"peter"}
我想使这个通用,所以类将是:
public class MyObject{
public String name;
public String value;
//constructor here
}
这样调用:
ObjectMapper mapper = new ObjectMapper();
MyObject o = new MyObject("apple","peter");
mapper.writeValue(System.out,o);
会导致
{"apple":"peter"}
可能吗?
您似乎在寻求一种存储通用命名的属性及其值,然后将其呈现为JSON的方法。AProperties
是一个很好的自然表示形式,并且ObjectMapper
知道如何序列化它:
ObjectMapper mapper = new ObjectMapper();
Properties p = new Properties();
p.put("apple", "peter");
p.put("orange", "annoying");
p.put("quantity", 3);
mapper.writeValue(System.out, p);
输出:
{"apple":"peter","orange":"annoying","quantity":3}
确实可以ObjectNode
从头开始构建,但是使用ObjectNode
存储数据可能会导致Jackson与内部业务逻辑的不良耦合。如果可以使用更合适的现有对象,例如Properties
或的任何变体Map
,则可以使JSON端与数据隔离。
另外,从概念上讲,您想问“我的对象是什么?”
ObjectNode
。Properties
。Map
。杰克逊可以应付所有这些要求。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句