有没有办法将Java对象转换为如下所示的字符串?
请注意,所有字段名称都应进行转义,"\n"
用于分隔记录。
{
"content":"{\"field1\":123, \"field2\":1, \"field3\":0, \"field4\":{\"sub1\":\"abc\", \"sub2\":\"xyz\"}}\n
{\"field1\":234, \"field2\":9, \"field3\":1, \"field4\":{\"sub1\":\"xyz\", \"sub2\":\"abc\"}}"
}
谢谢,
答案 0 :(得分:2)
您可以使用GSON执行该任务。
Gson是一个Java库,可用于将Java对象转换为JSON表示。它还可用于将JSON字符串转换为等效的Java对象。 Gson可以处理任意Java对象,包括您没有源代码的预先存在的对象。
如果您需要更好的可读表示,可以使用漂亮的打印功能。
Gson gson = new GsonBuilder().setPrettyPrinting().create();
要实现类似于您的示例的内容,您可以在第一步中序列化您的内容类,将结果字符串作为属性放在另一个类中并再次序列化该类。
这样GSON会处理"
的转义。
如果您在数组中收集字符串并使用上面显示的漂亮打印选项,则会得到类似于换行符要求的内容,但不完全相同。
上述过程的结果可能如下所示:
{
"content": [
"{\"field1\":123, \"field2\":1, \"field3\":0, \"field4\":{\"sub1\":\"abc\", \"sub2\":\"xyz\"}}",
"{\"field1\":234, \"field2\":9, \"field3\":1, \"field4\":{\"sub1\":\"xyz\", \"sub2\":\"abc\"}}"
]
}
答案 1 :(得分:0)
另一种方法是使用Json-lib库http://json-lib.sourceforge.net
String jsonStrData = " ....... ";
JSONObject jsonObj = JSONObject.fromObject(jsonStrData);
System.out.println(jsonObj);
与GSON一样,json-lib会为您处理转义,有关如何在此处使用它的更多信息http://json-lib.sourceforge.net/usage.html