python - 无法替换 json 对象中的参数值

标签 python

我正在尝试替换 json 对象中变量的值,但我无法这样做。我想替换 json_input 变量中日期时间的值,但截至目前日期时间正在连接

json_input='{"provider_code":"test","provider_resource_id":{"name":"test","value":"test"},"provider_account":"123","kpis":[{"kpi":"kpis","value":"80","unit":"%","datetime":""}]}'


newjson = {}
try:
    decoded = json.loads(json_input)

    # Access data
    for x in decoded['kpis']:
         if not (x['datetime']):
               x['datetime']="2019-07-05T18:17:08.257Z"
             newjson=json_input+x['datetime']
except (ValueError, KeyError, TypeError):
    print("JSON format error")
print(newjson)
*Actual*
new json = {"provider_code":"aws","provider_resource_id":{"name":"app_arn","value":"arn:aws:elasticbeanstalk:us-east-1:802878444238:application/mcms-eb-test"},"provider_account":"802878444238","kpis":[{"kpi":"aws.elasticbeanstalk.health_status","value":"80","unit":"%","datetime":""}]}2019-07-05T18:17:08.257Z

*Expected*
new json='{"provider_code":"test","provider_resource_id":{"name":"test","value":"test"},"provider_account":"123","kpis":[{"kpi":"kpis","value":"80","unit":"%","datetime":"2019-07-05T18:17:08.257Z"}]}'

最佳答案

您的问题似乎是您正在将 json_input 写入 newjson,而您确实想将 decoded 写入 newjson,因为 decoded 是您要修改的对象。 json_input 永远不会被修改,它仅用于在 Python 中创建 JSON 表示。此外,+x['datetime'] 没有任何帮助,并且可能是导致 newjson 末尾添加日期时间的原因。

不要使用 newjson=json_input+x['datetime'],而是尝试 newjson = demod.dumps()

关于python - 无法替换 json 对象中的参数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56920171/

相关文章:

python - Pandas read_fwf 没有加载文件的全部内容

python (VTK) : Connect two 3D points by an oriented cylinder

python - Lightroom 导出后,PIL 和 pyexiv2 中缺少图像标题标签

python - 在没有运行 X 服务器的情况下生成 matplotlib 图

python - 从 numpy 中 nd 数组的末尾取出一个切片

python - 类型错误 : cannot unpack non-iterable bool object

python - RabbitMQ 消耗一条消息(如果存在)并退出

python - 有人可以解释这是如何通过字典循环的吗?

python - 为什么 json.loads() 对某些字符串起作用?

python - 如何使用 remote_addr header 限制对 POST api 的访问?