【问题标题】:Python JSON Field ModificationPython JSON 字段修改
【发布时间】:2020-07-06 18:57:36
【问题描述】:

我有一个 JSON 查询(​​附在末尾),我想用我的函数的两个输入来修改字段“where”

def jsonValue(columnName, columnValue):

    with open('payload.json', 'r') as jsonFile:
        jsonObject = json.load(jsonFile)
    
    queryTable = "{}:{\"values\":[{}]}".format(columnName, columnValue)
    jsonObject["where"] = queryTable

    with open('payload.json', 'w') as jsonFile:
        json.dump(jsonObject, jsonFile)

当在 JSON 文件中它应该是 "where": {"SecurityId":{"values":[1]}} 时,它会返回 "where": "{ \"SecurityId\":{\"values\":[1]} }"。如何删除外部引号并嵌套双引号而不会出现关键错误。 (我不能使用jsonObject["where"][columnName] 来编辑值,因为我改变了)。 “''”也不起作用。

【问题讨论】:

    标签: python json formatting


    【解决方案1】:

    JSON 在存储时是一个字符串,但在加载时由 Python 对象表示。将新元素创建为对象,而不是字符串:

    def jsonValue(columnName, columnValue):
    
        with open('payload.json', 'r') as jsonFile:
            jsonObject = json.load(jsonFile)
        
        queryTable = {columnName: {"values": [columnValue]}}
        jsonObject["where"] = queryTable
    
        with open('payload.json', 'w') as jsonFile:
            json.dump(jsonObject, jsonFile)
    

    请注意,如果"where" 必须使用可能的多个columnNames 进行更新,请改为设置其columnName 字段:

    def jsonValue(columnName, columnValue):
        with open('payload.json', 'r') as jsonFile:
            jsonObject = json.load(jsonFile)
        #             v get field or set+get field if it does not exist
        jsonObject.setdefault("where", {})[columnName] = {"values": [columnValue]}
        with open('payload.json', 'w') as jsonFile:
            json.dump(jsonObject, jsonFile)
    

    【讨论】:

    • 感谢您的帮助,接下来我还需要修改基本字段,这样会更有帮助。
    猜你喜欢
    • 2019-09-18
    • 2022-08-19
    • 2021-08-23
    • 2018-12-29
    • 2021-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    相关资源
    最近更新 更多