我只是希望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();
}
输出如下所示:{对象}{methoda}…{objN}全部放在一行。
但是我想:
{其中obj1}
{methoda}
…
我该怎么做?
为清晰起见,提供的示例被缩进,但默认行为是写入结果JSON字符串而不包含任何不必要的空白。您可以这样重写此行为:
jw.Formatting = Formatting.Indented;
jw.WriteStartObject();
...
进一步阅读
-
Formatting
enum
为了确保每个条目都附加到新行,您可以在编写JSON对象之后简单地编写一个新的行字符,如下所示:
...
jw.WriteEndObject();
jw.WriteRaw("n");
或者通过在底层TextWriter
上调用WriteLine
,尽管这需要在此方法之外完成。
算出来了,虽然不确定是否有更干净的方法。我加了一个
jw.WriteWhitespace(Environment.NewLine);
在末尾。现在一切看起来都很好:
{"时间戳":"2014 - 03 - 10 t15:04:27.0128185…}
{"时间戳":"2014 - 03 - 10 t15:04:27.0128185…}
div…