首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用json数据python更新现有的json文件

如何用json数据python更新现有的json文件
EN

Stack Overflow用户
提问于 2015-05-28 19:23:51
回答 2查看 1.4K关注 0票数 1

嘿,我有一个json文件,例如:{“记者”:"ABC",“创建”:"2015-05-28 11:29:16",“受让人”:"abc","Key":"JIRA-123“},{”记者“:"def",”创建“:"2015-05-28 11:29:16",“受让人”:"DEF","Key":"JIRA-234“}

在上面的格式中,现在我需要从动态生成的数据中向这个文件中添加更多的条目,比如下面的数据

代码语言:javascript
复制
{
    "Reporter": "xyz",
    "Created": "2015-05-28 11:29:16",
    "Assignee": "XYZ",
    "Key": "JIRA-456"
},
{
    "Reporter": "utf",
    "Created": "2015-05-28 11:29:16",
    "Assignee": "UTF",
    "Key": "JIRA-678"
}

但是,当我将这些数据更新到上面的json文件中时,它将再次有一个单独的列表,而不是组合。

像这样:

代码语言:javascript
复制
[
{
    "Reporter": "abc",
    "Created": "2015-05-28 11:29:16",
    "Assignee": "ABC",
    "Key": "JIRA-123"
},
{
    "Reporter": "def",
    "Created": "2015-05-28 11:29:16",
    "Assignee": "DEF",
    "Key": "JIRA-234"
}
]
[
{
    "Reporter": "xyz",
    "Created": "2015-05-28 11:29:16",
    "Assignee": "XYZ",
    "Key": "JIRA-456"
},
{
    "Reporter": "utf",
    "Created": "2015-05-28 11:29:16",
    "Assignee": "UTF",
    "Key": "JIRA-678"
}
]

但我想要的是下面的格式

代码语言:javascript
复制
[
{
    "Reporter": "abc",
    "Created": "2015-05-28 11:29:16",
    "Assignee": "ABC",
    "Key": "JIRA-123"
},
{
    "Reporter": "def",
    "Created": "2015-05-28 11:29:16",
    "Assignee": "DEF",
    "Key": "JIRA-234"
},
{
    "Reporter": "xyz",
    "Created": "2015-05-28 11:29:16",
    "Assignee": "XYZ",
    "Key": "JIRA-456"
},
{
    "Reporter": "utf",
    "Created": "2015-05-28 11:29:16",
    "Assignee": "UTF",
    "Key": "JIRA-678"
}
]

我尝试了模式r+和a+,但我没有得到我想要的。

代码语言:javascript
复制
with open(os.path.abspath(os.path.join(os.path.dirname(__file__), 'static', 'result', file_name + '_issues.json')), 'r+') as nInfo:
  nInfo.write(json.dumps(file_data,indent=4, separators=(',', ': ')))

有人能帮我实现这个目标吗。

特克斯!VK

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-02 15:01:38

我想出了办法。

代码语言:javascript
复制
with open(os.path.abspath(os.path.join(os.path.dirname(__file__),'static', 'result', file_name + '_issues.json')), 'r+') as nInfo:
  count = 0
  for data in file_data:
      count += 1
      if count == 1:
        nInfo.seek(-2, 2)
      if file_data.index(data) != len(file_data):
        nInfo.write(',')
      nInfo.write(json.dumps(data, default=lambda a: '[%s,%s]'(str(type(a)), a.pk)))
  nInfo.write(']')
  nInfo.write(' ')
票数 0
EN

Stack Overflow用户

发布于 2015-05-28 19:42:00

假设您的json文件包含一个对象列表:

首先从文件中加载json。

代码语言:javascript
复制
with open('file.json') as f:
    oldjson = json.load(f)

然后用新的dict更新json并覆盖该文件。

代码语言:javascript
复制
oldjson.append(list_of_dicts)
with open('file.json', 'w') as f:
    f.write(json.dumps(oldjson, indent=4, separators=(',', ': ')))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30515424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档