使用GSON JsonWriter将漂亮的JSON输出写入文件输出流

7

我在使用Gson库将JSON字符串漂亮地打印到文件中时遇到了困难。我正在使用的代码如下:

    Gson gs = new GsonBuilder().setPrettyPrinting().disableHtmlEscaping().create();     

    JsonWriter jsonWriter = null;
    try {
        jsonWriter = new JsonWriter(new OutputStreamWriter(stream, "UTF-8"));
        jsonWriter.beginArray();

    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

    for (Feed feed : feeds) {
        gs.toJson(feed, Feed.class, jsonWriter);
    }       

    try {
        jsonWriter.endArray();

    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            jsonWriter.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

这里的stream指的是文件输出流。尽管我已经启用了漂亮打印,但仍然在文件中获得未格式化的JSON字符串。

非常感谢您的帮助。


1
使用JSONWriter是多余的--这就是GSON的作用。你尝试过执行gs.toJSON(feeds, outputStreamWriter)吗? - Adrian Leonhard
1个回答

10

您可以通过设置缩进来简单启用漂亮的打印。

jsonWriter.setIndent("  ");

2
这是正确的答案。当使用JsonWriter时,GsonBuilder.setPrettyPrinting()调用会被忽略。 - Mr. Polywhirl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接