我只希望json.net序列化程序写出json对象(到文件),每行一个对象,但它只是将所有内容附加到同一行。所有json.net示例似乎都暗示我想要的是默认行为,但我认为它不是这样工作的。代码如下:

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}全部在一行上。
但我想:
{obj1}
{obj2}

我该怎么做?

最佳答案

提供的示例缩进是为了清楚起见,但默认行为是编写生成的json字符串,而不使用任何不必要的空格。您可以这样覆盖此行为:

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

进一步阅读
Formatting enum
为了确保每个条目都附加到一个新行,只需在编写完json对象后编写一个新行字符,如下所示:
...
jw.WriteEndObject();
jw.WriteRaw("\n");

或者通过在底层的WriteLine上调用TextWriter,尽管这需要在这个方法之外完成。

关于c# - 为什么JSON.NET在一行上序列化所有内容?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22367806/

10-12 00:15
查看更多