私はコンパクトなJSON文字列を持っているので、最初にデシリアライズする必要なく、Javaでうまくフォーマットしたいです。たとえば jsonlint.org のように。これを提供するライブラリはありますか?
XMLの同様のソリューションもニースです。
int spacesToIndentEachLevel = 2;
new JSONObject(jsonString).toString(spacesToIndentEachLevel);
org.json.JSONObject
の使用(JavaEEおよびAndroidに組み込み)
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にシリアル化して読み込むことができます。
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"
]
}
Jacksonを使用している場合、SerializationFeature
でObjectMapper
を設定することで簡単にこれを実現できます。
com.fasterxml.jackson.databind.ObjectMapper mapper = new ObjectMapper();
mapper.configure(SerializationFeature.INDENT_OUTPUT, true);
mapper.writeValueAsString(<yourObject>);
それでおしまい。
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がない場合に使用できます。
私は非常に簡単な解決策を思いつきます:
<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));
Underscore-Javaライブラリーには、メソッドU.formatJson(json)
およびU.formatXml(xml)
があります。私はプロジェクトのメンテナーです。