有没有人知道如何让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 file和source code of BufferedSinkJsonWriter中的prettyPrintObject().
但是,如果你使用moshi和Retrofit,我还没有弄清楚是否以及如何做到这一点.