读取,修改和写回JSON文件时如何保持相同的结构?

问题描述 投票:0回答:1

我目前正在读取JSON文件,添加密钥并使用此过程将其写回到同一文件中

with open('data.json', 'r+') as f:
    data = json.load(f)
    temp_key={"test":"val"}
    data["test"]["new_key"] = temp_key
    f.seek(0)        # <--- should reset file position to the beginning.
    json.dump(data, f, indent=2)
    f.truncate()     # remove remaining part

(从here采纳)

但是问题是它不维持秩序。例如,如果我读入:

{
  "test": {
    "something": "something_else"
  },
  "abc": {
    "what": "huh"
  }
}

输出结果为:

{
  "abc": {
    "what": "huh"
  },
  "test": {
    "something": "something_else",
    "new_key": {
      "test": "val"
    }
  }
}

[当我希望成为:

{
  "test": {
    "something": "something_else",
    "new_key": {
      "test": "val"
    }
  },
  "abc": {
    "what": "huh"
  }
}

[我意识到JSON是基于键/值的结构,顺序无关紧要,但是有没有办法进行修改并保持原始结构?

python json python-2.x
1个回答
1
投票

正如我在评论中所说,可以将collections.OrderedDictcollections.OrderedDict接受的可选object_pairs_hook关键字参数一起使用(在Python 2.7中,以在重写文件时保留原始数据的顺序。) >

这是我的意思:

json.load()
© www.soinside.com 2019 - 2024. All rights reserved.