在JSON中表示布尔值

时间:2017-11-17 19:45:57

标签: python json

假设我有一个包含以下内容的file.json:

[
  {
    "name": "Shirt1",
    "product_id": "001234"
  },
  {
    "name": "Shirt2",
    "product_id": "005678"
  }
]

使用Python3,我想在两个词典中添加以下行:

"type": "external"
"reviews_allowed": false

这是我的代码:

import json
import os

with open("file.json", "r", encoding="utf8") as in_file:
INP = json.load(in_file)
DATA = []
for item in INP:
    item["type"] = "external"
    item["reviews_allowed"] = "false"
    DATA.append(item)
    with open("file2.json", "w", encoding="utf-8") as out_file:
        out_file.write(json.dumps(DATA, indent=2, ensure_ascii=False))
os.rename("file2.json", "file.json")

但是,我得到以下内容:

[
  {
    "name": "Shirt1",
    "product_id": "001234",
    "type": "external",
    "reviews_allowed": "false"
  },
  {
    "name": "Shirt2",
    "product_id": "005678",
    "type": "external",
    "reviews_allowed": "false"
  }
]

有没有办法摆脱 false 周围的双引号? 非常感谢你的时间!

2 个答案:

答案 0 :(得分:4)

falserecognised作为JSON中自己的类型:

  

值可以是双引号中的字符串,也可以是数字,或true或   falsenull,或对象或数组。

在python中,JSON false直接映射到False bool值:

>>> json.dumps({'val' : False})
'{"val": false}'

答案 1 :(得分:4)

JSON概念false直接映射到Python概念False。使用此行:

item["reviews_allowed"] = False