作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个可以使用 Jackson 序列化为 JSON 的对象。我想将此对象添加到 JSONObject 并将内容序列化
JSONObject msg = new JSONObject();
put("something", "value");
put("myThing", myThing);
mapper.writeValueAsString(msg);
String s = msg.toString();
但结果是
{"something":"value","myThing":"com.example.things"}
我已经尝试过
put("myThing", mapper.valueToTree(myThing))
// and
put("myThing", mapper.writeValueAsString(myThing))
然而,这两者都会导致子对象被转义
{"something":"value","myThing":"{\"foo\":\"bar\"}"}
我怎样才能得到我真正想要的东西......
{"something":"value","myThing":{"foo":"bar"}}
最佳答案
为 myThing 对象创建一个 JSONObject。
像这样:
JSONObject obj = new JSONObject();
obj.put("foo", myThing.getFoo());
并将其添加到主 JSONObject 中:
JSONObject msg = new JSONObject();
msg.put("something", "value");
msg.put("myThing", obj);
<小时/>
另一种方法是使用Annotations来标记类中需要序列化的字段,然后通过反射生成JSON对象。
I have some classes on Github which you can use .
使用示例:
public class MyClass {
@JSONElement(name = "foo")
private String field1;
MyClass(String f) {
this.field1 = f;
}
[...]
}
MyClass object = new MyClass("bar");
JSONObject json = JSONMarshaller.marshall(object);
该对象的结果 JSON 为:
{"foo":"bar"}
关于java - 如何将对象添加到 JSONObject 而不转义内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31917348/
我是一名优秀的程序员,十分优秀!