我只希望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/