Python 修改JSON而不改变标记之间的空白

Python 修改JSON而不改变标记之间的空白,python,json,Python,Json,有没有一种方法可以在不改变标记之间空白的情况下修改JSON 这样的反序列化程序/序列化程序需要: 跟踪标记之间的空白 具有处理数据结构长度变化(添加/删除字典/列表项)的明确概念 对处理JSON结构的插入/删除有一个定义良好的概念 最后两个条件使事情变得相当困难,因此我认为最好消除这个问题的最后两个条件。因此,我们只处理令牌列表以及它们之间的空格。我正在设想这样的事情: import stable_json with open("file.json") as f: data: stab

有没有一种方法可以在不改变标记之间空白的情况下修改JSON

这样的反序列化程序/序列化程序需要:

  • 跟踪标记之间的空白
  • 具有处理数据结构长度变化(添加/删除字典/列表项)的明确概念
  • 对处理JSON结构的插入/删除有一个定义良好的概念
  • 最后两个条件使事情变得相当困难,因此我认为最好消除这个问题的最后两个条件。因此,我们只处理令牌列表以及它们之间的空格。我正在设想这样的事情:

    import stable_json
    
    with open("file.json") as f:
        data: stable_json.JsonObject = stable_json.loads(f.read())
    
    json_dict = data.deserialize()
    json_dict["point"]["x"] += 1
    json_dict["values"] = [-42, 0, 42]
    
    # Throws exception if any tokens have been inserted/removed
    data.update_in_place(json_dict)
    
    s = data.serialize()
    print(s)
    
    输入:

    {
        "key": "value",
        "point": { "x": 1, "y": 2 }
        "values": [ 3, 4, 5 ]
    }
    
    输出:

    {
        "key": "value",
        "point": { "x": 2, "y": 2 }
        "values": [ -42, 0, 42 ]
    }
    

    你为什么想要这个?如果您只是想让它保持可读性,请使用漂亮的打印机/格式化程序。如果你有其他原因想保留空白,你应该想想这是个多么糟糕的主意。@JimStewart为什么这是个糟糕的主意?因为意外地形成一个定义不清的问题的危险?如果使用JSON作为配置格式,如果只需要自动生成其中的一小部分,那么尽可能保持它的稳定性并不是世界上最糟糕的事情。如果使用JSON作为配置格式是个坏主意,那么这是另一个问题再想一想,这是一件非常不灵活的事情…data:stable_json.JsonObject=stable_json.loads(f.read())行中的data:means是什么意思?我从未遇到过这样的Python代码。你能指出这是怎么回事吗?@rajeshkumargp,那只是。这种特殊用法在Python3.8中是正式的,尽管类型提示通常在Python3.4的IIRC中。