Java 如何通过Jackson';他是杰松发电机吗?
我想使用jacksonapi(JsonFactory,JsonGenerator)在以下结构中生成一个JSON字符串。我怎么做 预期:Java 如何通过Jackson';他是杰松发电机吗?,java,json,jackson,Java,Json,Jackson,我想使用jacksonapi(JsonFactory,JsonGenerator)在以下结构中生成一个JSON字符串。我怎么做 预期: { "api": { "Salutaion": "Mr", "name": "X" }, "additional": { "Hello", "World" } } 实际: { "api": "{ \"Salutaion\": \"Mr\",
{
"api": {
"Salutaion": "Mr",
"name": "X"
},
"additional": {
"Hello",
"World"
}
}
实际:
{
"api": "{
\"Salutaion\": \"Mr\",
\"name\": \"X\"
}",
"additional": "{
\"Hello\",
\"World\"
}"
}
属性api和additional的值将作为字符串提供给我。我是否应该使用WriteObject字段(如下所示)
构造jGenerator对象后,如何获得最终构造的JSON对象的字符串表示形式?
toString()提供了一个json字符串,但apiString中的双引号(“)以转义字符作为前缀\
这是正确的方法吗?假设
apiString
和additionalString
是对包含JSON内容的String
对象的引用,您将希望将其原始写入,即直接写入内容。否则,您将其序列化为JSON字符串,Jackson将需要转义任何相关字符
比如说
jGenerator.writeFieldName("api");
jGenerator.writeRawValue(apiString);
对于
api
,对于additional
也是一样,它是正确的,除非它是无效的,否则apiString是一个JSON字符串。我应该使用writeTree()吗为了确保得到问题中描述的最后一个字符串?我不明白。什么是apiString
?它是包含JSON内容的string
?是的,{“sallaion”:“Mr”,“name”:“X”}是apiString字符串变量的值。
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()
jGenerator.writeFieldName("api");
jGenerator.writeRawValue(apiString);