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オブジェクトをJSON表現に変換するために使用できるJavaライブラリです。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

もう 1 つの方法は、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 に答える