7

現在、私はJackson JSONプロセッサを使用して、設定データなどをファイルに書き込んでいます。これは主に、上級ユーザーがこのデータを変更/バックアップできるようにするためです。ジャクソンは非常に使いやすく、明らかに適切に機能するため(ここを参照)、これには素晴らしいですが、実行したときにすべてのデータを1行myObjectMapper.writeValue(myFile, myJsonObjectNode)に書き込むことが唯一の問題です。ObjectNode私がやりたいのは、JSONをよりユーザーフレンドリーな形式にフォーマットすることです。

たとえば、単純なjsonツリーを渡すと、次のようになります。

{"testArray":[1,2,3,{"testObject":true}], "anotherObject":{"A":"b","C":"d"}, "string1":"i'm a string", "int1": 5092348315}

私はそれをファイルに次のように表示したいと思います:

{
    "testArray": [
        1,
        2,
        3,
        {
            "testObject": true
        }
    ],
    "anotherObject": {
        "A": "b",
        "C": "d"
    },
    "string1": "i'm a string",
    "int1": 5092348315
}

ジャクソンでこれを行う方法を知っている人はいますか、それともジャクソンからJSONの文字列を取得し、別のサードパーティのライブラリを使用してフォーマットする必要がありますか?

前もって感謝します!

4

4 に答える 4

7

このようなオブジェクトライターを作成してみてください

 ObjectWriter writer = mapper.defaultPrettyPrintingWriter();
于 2012-06-13T04:56:05.720 に答える
4

次のように、事前にマッパーを構成する必要があります。

ObjectMapper mapper = new ObjectMapper();
mapper.configure(SerializationConfig.Feature.INDENT_OUTPUT, true);
mapper.writeValue(myFile, myJsonObjectNode);
于 2013-03-14T13:11:59.670 に答える
2

上記のコメントによると、これは私にとって非常にうまくいきました、

     Object json = mapper.readValue(content, Object.class);
     mapper.writerWithDefaultPrettyPrinter().writeValueAsString(json); 

コンテンツはJSON文字列の応答です

ジャクソンバージョン:2.12

于 2015-09-03T06:30:28.003 に答える
2

Jackson 2.0.2以降で標準のインデントを有効にするには、次を使用します。

ObjectMapper myObjectMapper = new ObjectMapper();
myObjectMapper.enable(SerializationFeature.INDENT_OUTPUT);
myObjectMapper.writeValue(myFile, myJsonObjectNode)

ソース:https ://github.com/FasterXML/jackson-databind

于 2017-10-30T09:55:46.823 に答える