1

有没有办法将 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\"}}"

}

谢谢,

4

2 回答 2

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\"}}"
  ]
}
于 2012-05-30T14:17:36.140 回答
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

于 2012-05-30T14:52:21.990 回答