【问题标题】:How to modify nested JSON with python如何使用 python 修改嵌套的 JSON
【发布时间】:2016-07-21 18:17:00
【问题描述】:

我需要使用 Python 更新 (CRUD) 嵌套的 JSON 文件。为了能够调用python函数(更新/删除/创建)整体并将其写回json文件。

这是sample file

我正在查看 the remap 库,但不确定这是否可行。

    {
  "groups": [
    {
      "name": "group1",
      "properties": [
        {
          "name": "Test-Key-String",
          "value": {
            "type": "String",
            "encoding": "utf-8",
            "data": "value1"
          }
        },
        {
          "name": "Test-Key-Integer",
          "value": {
            "type": "Integer",
            "data": 1000
          }
        }
      ],
      "groups": [
        {
          "name": "group-child",
          "properties": [
            {
              "name": "Test-Key-String",
              "value": {
                "type": "String",
                "encoding": "utf-8",
                "data": "value1"
              }
            },
            {
              "name": "Test-Key-Integer",
              "value": {
                "type": "Integer",
                "data": 1000
              }
            }
          ]
        }
      ]
    },
    {
      "name": "group2",
      "properties": [
        {
          "name": "Test-Key2-String",
          "value": {
            "type": "String",
            "encoding": "utf-8",
            "data": "value2"
          }
        }
      ]
    }
  ]
}

【问题讨论】:

  • 信息不足。你有什么问题?就像 Fhaab 所说,现有的 json 模块可以让你将 JSON 加载到 python 字典中。您可以根据需要操作字典。为什么你觉得你需要任何额外的库?

标签: python json


【解决方案1】:

我觉得我在你的问题中遗漏了一些东西。无论如何,我的理解是你想读取一个 json 文件,将数据编辑为 python 对象,然后用更新的数据将其写回?

读取json文件:

import json

with open("data.json") as f:
  data = json.load(f)

这会创建一个字典(根据您提供的格式),您可以随意操作它。假设你想写出来:

with open("data.json","w") as f:
  json.dump(data,f)

【讨论】:

  • 读/写没问题,我的挑战是搜索键/值对并用新值更新它?这就是我不知道该怎么做。
  • 好吧,那么我认为您应该问一个完全不同的问题-如何在字典中搜索键/值对,并且要清楚-您是否在搜索 key=search_key AND value=search_value ?或者您是否在寻找 search_key = 特别的东西的价值?当搜索是“名称”并且您的数据中有一大堆它们时会发生什么?给出上面的数据,说“这是我的字典”,然后准确地说出你想以编程方式完成什么。
  • 感谢 @Fhaab 和 mad-wombat 帮助我更好地理解我的问题。 Json 文件具有唯一的组名。像组 1、组 2。每个唯一组都有包含名称和值的属性。我需要搜索组 name = group1 和 name="Test-Key-Integer" 和 data = 1000 的键/值对,并将其更新为例如 2000。组名称、属性名称和数据值的组合是唯一的。希望这可以帮助。我应该修改问题以使其更清楚吗?
  • 是的,我认为你应该澄清这个问题;如果您希望这真的是一个通用搜索,或者给定数据格式,您正在寻找一个专门查找组名称“something1”的函数,其中该组具有 name="something2" 和 data=something3。您可能只需要编写几个函数来处理特定情况。
  • 我会重写它。你们 cmets 非常非常有帮助。我应该把它作为一个答案,因为你实际上说得很清楚并开始一个新问题吗?或者只是修改现有的问题。我虽然你应该得到一些积分:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-03
  • 1970-01-01
  • 1970-01-01
  • 2021-09-24
  • 2018-07-31
  • 1970-01-01
  • 2021-08-14
相关资源
最近更新 更多