【发布时间】:2015-11-06 18:51:08
【问题描述】:
我想使用 Jackson API (JsonFactory,JsonGenerator) 生成以下结构的 JSON 字符串。我该怎么做?
预期:
{
"api": {
"Salutaion": "Mr",
"name": "X"
},
"additional": {
"Hello",
"World"
}
}
实际:
{
"api": "{
\"Salutaion\": \"Mr\",
\"name\": \"X\"
}",
"additional": "{
\"Hello\",
\"World\"
}"
}
属性 api 和附加的值将作为字符串提供给我。我应该使用 writeObjectField(如下)吗?
jGenerator.writeObjectField("api", apiString);
构造jGenerator对象后,如何得到最终构造的JSON Object的String表示?
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
JsonGenerator jGenerator = jfactory.createJsonGenerator(outputStream);
jGenerator.writeStartObject();
jGenerator.writeObjectField("api", apiString);
jGenerator.writeObjectField("additional", additionalString);
jGenerator.writeEndObject();
jGenerator.close();
outputStream.close();
outputStream.toString()
outputStream.toString() 给出一个 json 字符串,但 apiString 中的双引号 (") 以转义字符 \
为前缀这是正确的方法吗?
【问题讨论】:
-
是的,它是正确的,除非它是无效的
-
其实 apiString 是一个 JSON 字符串。我应该使用 writeTree() 来确保我得到问题中描述的最终字符串吗?
-
我不明白。
apiString是什么?是包含 JSON 内容的String吗? -
yes , {"Salutaion": "Mr","name": "X"} 是 apiString String 变量的值。