Gson JsonArray 漂亮的打印

Gson JsonArray pretty printing

这是我的例子:

public class Obj {
    String field1;
    int field2;
    public Obj(String field1, int field2) {
        this.field1 = field1;
        this.field2 = field2;
    }   
    public static void main(String[] args) 
    {       
        final Obj o1 = new Obj("string1",1);
        final Obj o2 = new Obj("string2",2);

        List<Obj> list = new ArrayList<Obj>(){{
            add(o1);
            add(o2);
        }};

        Gson gson = new GsonBuilder().setPrettyPrinting().create();
        JsonElement element = gson.toJsonTree(list, new TypeToken<List<Obj>>(){}.getType());
        JsonArray jsonArray = element.getAsJsonArray();
        System.out.println("1-");
        System.out.println(jsonArray.toString());        

        String json = gson.toJson(o1);
        System.out.println("2-");
        System.out.println(json);
    }
}

输出:

1-
[{"field1":"string1","field2":1},{"field1":"string2","field2":2}]

2-
{
  "field1": "string1",
  "field2": 1
}

如何为 jsonArray 启用漂亮的打印?

我认为这足以解释我的问题,但是这里有一些 bla bla bla bla 因为 Whosebug 询问我更多细节让我 post 这个问题。

您可以使用 Jackson 库。

检查此 post: Convert JSON String to Pretty Print JSON output using Jackson

问题真的很相似

toString(2) 尊重标识空间

System.out.println(json.toString(2));

如果您的项目中有服务器,我建议将 index.jsp 和 out.println 简化为 JSON。并将此插件添加到您的 Google Chrome JSON Viewer

你打印得漂亮Json.

JsonArray::toString似乎没有提供配置漂亮打印的方法。

您可能只需要使用您的 Gson 实例反序列化它:

System.out.println("3-");
System.out.println(gson.toJson(jsonArray));