栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

带有json.dump的JSON对象之间的逗号分隔符

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

带有json.dump的JSON对象之间的逗号分隔符

您得到的不是JSON对象,而是一系列单独的JSON对象。

你想做些什么的 没有一个JSON对象,但不同的JSON流,它们之间用逗号对象。这将不再是可解析的。*

  • JSON规范足够简单,可以手动解析,并且应该很清楚,一个对象后面跟着另一个逗号之间的对象与任何有效的产生都不匹配。

如果您尝试创建JSON数组,则可以这样做。除非存在内存问题,否则显而易见的方法是构建字典列表,然后一次将其全部转储:

output = []for f in files:    # ...    output.append(data)json.dump(output, outfile)

如果存在内存问题,则可以选择以下几种:

  • 对于一个快速和肮脏的解决方案,你可以通过写假的吧
    [
    ,
    ]
    手动。(但请注意,即使某些解码器会接受,但在最后一个值之后加上多余的逗号也不是有效的JSON。)
  • 您可以将循环包装在一个产生每个的生成器函数中
    data
    ,并进行扩展
    JSONEnprer
    以将迭代器转换为数组。(请注意,尽管您可能想编写一种内存效率更高的实现,但实际上是在文档中用作为什么以及如何进行扩展的示例
    JSONEnprer
    。)
  • 您可以寻找具有某种内置迭代流API的第三方JSON库。

但是,值得考虑您要做什么。也许单独的JSON对象流实际上 您要执行的操作的正确文件格式/协议/
API。因为JSON是自定界的,所以实际上没有理由在单独的值之间添加定界符。(它甚至对鲁棒性没有多大帮助,除非您使用不会在整个JSON上直接显示的定界符

,
。)例如,您得到的正是JSON-
RPC的含义应该看起来像。如果您只是因为不知道如何解析这样的文件而要求不同的东西,那很容易。例如(为简单起见,使用字符串而不是文件):

i = 0d = json.JSonDeprer()while True:    try:        obj, i = d.raw_depre(s, i)    except ValueError:        return    yield obj


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/404590.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号