java – json与moshi格式化

前端之家收集整理的这篇文章主要介绍了java – json与moshi格式化前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有人知道如何让moshi生成带缩进的多行json(在config.json的上下文中供人类使用)
所以来自:
{"max_additional_random_time_between_checks":180,"min_time_between_checks":60}

这样的事情:

{
   "max_additional_random_time_between_checks":180,"min_time_between_checks":60
}

我知道其他json-writer实现可以这样做 – 但我想在这里坚持moshi以保持一致性

解决方法

如果你可以自己处理序列化对象,这应该可以解决问题:
import com.squareup.moshi.JsonWriter;
import com.squareup.moshi.Moshi;

import java.io.IOException;

import okio.Buffer;

public class MoshiPrettyPrintingTest {

    private static class Dude {
        public final String firstName = "Jeff";
        public final String lastName = "Lebowski";
    }

    public static void main(String[] args) throws IOException {

        final Moshi moshi = new Moshi.Builder().build();

        final Buffer buffer = new Buffer();
        final JsonWriter jsonWriter = JsonWriter.of(buffer);

        // This is the important part:
        // - by default this is `null`,resulting in no pretty printing
        // - setting it to some value,will indent each level with this String
        // NOTE: You should probably only use whitespace here...
        jsonWriter.setIndent("    ");

        moshi.adapter(Dude.class).toJson(jsonWriter,new Dude());

        final String json = buffer.readUtf8();

        System.out.println(json);
    }
}

这打印:

{
    "firstName": "Jeff","lastName": "Lebowski"
}

请参阅this test filesource code of BufferedSinkJsonWriter中的prettyPrintObject().

但是,如果你使用Moshi和Retrofit,我还没有弄清楚是否以及如何做到这一点.

原文链接:https://www.f2er.com/java/120971.html

猜你在找的Java相关文章