为什么JSON.NET在一行上序列化所有内容?

 雷神天在飘雪_804_959 发布于 2023-01-18 13:34

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

...

我该怎么做呢?

1 个回答
  • 为清晰起见,提供的示例是缩进的,但默认行为是在没有任何不必要的空格的情况下编写生成的JSON字符串.您可以像这样覆盖此行为:

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

    进一步阅读

    Formatting 枚举


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

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

    或者通过调用WriteLine底层TextWriter,虽然这需要在此方法之外完成.

    2023-01-18 13:37 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有