【问题标题】:Delimiter for multiple json strings多个 json 字符串的分隔符
【发布时间】:2014-12-18 14:37:49
【问题描述】:

我想将多个 json 字符串保存到一个文件中,并用分隔符分隔它们,这样可以轻松读取此列表,在分隔符上拆分并分别处理每个 json 文档。

由于外部原因,不能使用 json 数组进行序列化。

我想使用 JSON 中非法的分隔符(例如,使用逗号分隔是个坏主意,因为 json 字符串中有逗号)。

JSON 序列化字符串中是否存在不合法的字符?

【问题讨论】:

  • stackoverflow.com/questions/8676011/… - 另见json.org,“字符串”和“字符”的定义。
  • 并非如此。 json 可以封装任何字符。也许您的库会将一些不稳定的多字节字符编码到它的 \u1234 类型表示中,因此您可以使用原始字符作为您的分隔符,但这并不能保证在任何地方都可以使用。

标签: json serialization delimiter


【解决方案1】:

我知道这不完全是您所需要的,但您可以使用 this SO answer 将 json 字符串写入 CSV,然后使用良好的流式 CSV 阅读器(例如 this one)在另一端读取它

【讨论】:

    【解决方案2】:

    NDJSON

    看看 NDJSON(换行分隔的 JSON)。

    http://ndjson.org/

    在我看来,这正是你应该如何做事,尽管它并不完全是你所要求的。 (如果您不能将 JSON 对象扁平化为单行,那么它不适合您!)您要求使用 JSON 中不允许的分隔符。 JSON 中允许换行,但 JSON 不需要包含换行。

    该格式用于日志文件等。我是在查看 Lichess API 文档时发现的。

    您可以在中途开始监听 NDJSON 数据的广播流,等待下一个换行符,然后在对象到达时开始处理它们。

    如果您选择 NDJSON,那么您至少遵循了一个标准,我认为您很难找到一个替代标准来遵循。

    示例 NDJSON

    {"some":"thing"}
    {"foo":17,"bar":false,"quux":true}
    {"may":{"include":"nested","objects":["and","arrays"]}}
    

    【讨论】:

      【解决方案3】:

      一个老问题,但希望这个答案会有用。

      大多数 JSON 阅读器在以下字符上崩溃:,即information separator two。他们将其声明为“意外令牌”,所以我想它必须被包装才能通过或其他东西。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-02-25
        • 2011-11-28
        • 1970-01-01
        • 2012-05-20
        • 2013-10-30
        • 2018-02-27
        • 2013-10-19
        相关资源
        最近更新 更多