web-dev-qa-db-ja.com

既存のJSONデータをJavaできれいに印刷するにはどうすればよいですか?

私はコンパクトなJSON文字列を持っているので、最初にデシリアライズする必要なく、Javaでうまくフォーマットしたいです。たとえば jsonlint.org のように。これを提供するライブラリはありますか?

XMLの同様のソリューションもニースで​​す。

47
neu242

何かをきれいに印刷するには、その構造を知ることはとても役立つと思います。

構造を取得するには、 parse itにする必要があります。このため、最初にあなたが持っているJSON文字列を解析してから、上記のコメントで述べたpretty-printingメソッド toString を使用するよりもずっと簡単になるとは思いません。

もちろん、好きなJSONライブラリで同様のことができます。

4
Waldheinz
int spacesToIndentEachLevel = 2;
new JSONObject(jsonString).toString(spacesToIndentEachLevel);

org.json.JSONObjectの使用(JavaEEおよびAndroidに組み込み)

68
Heath Borders

1行で:

String niceFormattedJson = JsonWriter.formatJson(jsonString)

または

System.out.println(JsonWriter.formatJson(jsonString.toString()));

Json-io libray( https://github.com/jdereg/json-io )は、JDK以外に依存関係のない小さな(75K)ライブラリです。

JSONをきれいに印刷することに加えて、Javaオブジェクト(全体Javaオブジェクトグラフ))をJSONにシリアル化して読み込むことができます。

10

Gsonを使用します。 https://www.mkyong.com/Java/how-to-enable-pretty-print-json-output-gson/

Gson gson = new GsonBuilder().setPrettyPrinting().create();
String json = gson.toJson(my_bean);

出力

{
  "name": "mkyong",
  "age": 35,
  "position": "Founder",
  "salary": 10000,
  "skills": [
    "Java",
    "python",
    "Shell"
  ]
}
8
susemi99

Jacksonを使用している場合、SerializationFeatureObjectMapperを設定することで簡単にこれを実現できます。

com.fasterxml.jackson.databind.ObjectMapper mapper = new ObjectMapper();

mapper.configure(SerializationFeature.INDENT_OUTPUT, true);

mapper.writeValueAsString(<yourObject>);

それでおしまい。

6
Lars Rückemann

Gsonを使用する別の方法:

String json_String_to_print = ...
Gson gson = new GsonBuilder().setPrettyPrinting().create();
JsonParser jp = new JsonParser();
return gson.toJson(jp.parse(json_String_to_print));

Susemi99の投稿のように、Beanがない場合に使用できます。

3
vcycyv

私は非常に簡単な解決策を思いつきます:

<dependency>
    <groupId>com.cedarsoftware</groupId>
    <artifactId>json-io</artifactId>
    <version>4.5.0</version>
</dependency>

Javaコード:

import com.cedarsoftware.util.io.JsonWriter;
//...
String jsonString = "json_string_plain_text";
System.out.println(JsonWriter.formatJson(jsonString));
1
Do Nhu Vy

Underscore-Javaライブラリーには、メソッドU.formatJson(json)およびU.formatXml(xml)があります。私はプロジェクトのメンテナーです。

0