JSON.NET为什么要在一行上序列化所有内容? [英] Why does JSON.NET serialize everything on a single line?

查看:79
本文介绍了JSON.NET为什么要在一行上序列化所有内容?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我只是希望JSON.net序列化器写出JSON对象(到文件),每行一个对象,但是它只是将所有内容附加在同一顶行上.所有JSON.net示例似乎都暗示我想要的是默认行为,但我没有看到它那样工作.这是代码:

I simply want the JSON.net serializer to write out JSON objects (to file), one object per line but instead it just appends everything on the same top line. All of the JSON.net samples seem to imply that what I want is default behavior but I'm not seeing it work that way. Here's code:

static void EtwToJsonHelper(TraceEvent data, JsonSerializer s, JsonTextWriter jw)
{
    var names = data.PayloadNames;

    jw.WriteStartObject();
    jw.WritePropertyName("TimeStamp");
    jw.WriteValue(data.TimeStamp);
    ...
    jw.WriteEndObject();
}

输出看起来像这样: {object} {obj2} ... {objN}全部放在一行上.

Output looks like this: {object}{obj2}...{objN} all on a single line.

但是我想要:

{obj1}

{obj2}

...

我该怎么做?

推荐答案

为了清楚起见,对所提供的示例进行了缩进,但是默认行为是编写结果JSON字符串而没有任何不必要的空格.您可以像这样重写此行为:

The samples provided are indented for clarity, but the default behavior is to write the resulting JSON string without any unnecessary whitespace. You can override this behavior like this:

jw.Formatting = Formatting.Indented;
jw.WriteStartObject();
...

进一步阅读

为确保每个条目都附加到新行,您可以在编写JSON对象之后简单地写一个新行字符,如下所示:

To ensure that each entry is appended to a new line, you could simply write a new line character after you've written your JSON object, like this:

...
jw.WriteEndObject();
jw.WriteRaw("\n");

或者通过在基础TextWriter上调用 WriteLine 那将需要在此方法之外完成.

Or by calling WriteLine on the underlying TextWriter, though that would need to be done outside of this method.

这篇关于JSON.NET为什么要在一行上序列化所有内容?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆