我需要将具有三个字段(一个是对象列表)的简单 java 对象序列化为 json ,如下所示:
{
"id": "1",
"fields": [
{
"value": {
"someNumber": "0.0.2"
},
"id": "67"
}
],
"name": "Daniel"}
我已经阅读了关于自定义序列化程序 StdSerializer 和 JsonGenerator 的指南,正如我所理解的那样,要写入"name": "Daniel"
json,您需要做一些类似的事情,gen.writeObjectField("name", name);
但我无法理解两件事:
如何写一些像这里的字符串值:
"value": {
"name": "0.0.2"
},
以及如何将 java List 编写为这样的数组:
"fields": [
{
"value": {
"someNumber": "0.0.2"
},
"id": "67"
}]
其中“fields”是一个包含两个字段的对象的列表:“value”和“id”。任何帮助表示赞赏
像这样
public class Test {
public static void main(String[] args) throws IOException {
String ret;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectMapper mapper = new ObjectMapper();
JsonGenerator jg = mapper.getJsonFactory().createJsonGenerator(new PrintWriter(bos));
jg.writeStartObject();
jg.writeStringField("id", "1");
jg.writeArrayFieldStart("fields");
jg.writeStartObject();
jg.writeObjectFieldStart("value");
jg.writeStringField("someNumber","0.0.2");
jg.writeEndObject();
jg.writeStringField("id","67");
jg.writeEndObject();
//you can write more objects in fields here
jg.writeEndArray();
jg.writeStringField("name","Daniel");
jg.writeEndObject();
jg.flush();
jg.close();
ret = bos.toString();
bos.close();
System.out.println(ret);
}
}
结果是
{
"id":"1",
"fields":[
{
"value":{
"someNumber":"0.0.2"
},
"id":"67"
}
],
"name":"Daniel"
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句