如何使用 Python 更改 JSON 对象的值?

How do I change a value of a JSON object with Python?

我正在做一个项目,其中 Raspberry Pi 控制一些 12v 泵最终制作鸡尾酒。这是 Flask 中的 运行,在本地 Web 服务器(Pi)上。有多个带软管的酒瓶连接到泵,泵通过 Pi 上的 GPIO 引脚控制。这一切都很好。

我想添加一个功能,如果相关瓶子中剩余的酒量不足,我将无法制作鸡尾酒。我选择制作一个 .JSON 文件,因为它很轻且符合我的需要。我的 .JSON 文件中的对象如下所示:

"vodka": {
    "id":"3",
    "milliliters":1000,
    "fullness":500,
    "available": true
}

其中 'milliliters' 表示一整瓶的容量,'fullness' 表示瓶子还剩多少。

它 'reads' 值并将它们存储在 Python 变量中,例如:

x = open(data.json")
drinks = json.load(x)

vodkaBottleCapacity = (drinks['vodka']['milliliters'])
vodkaBottleLeft = (drinks['vodka']['fullness'])

我通过简单地使用来测试这是否有效:

print(vodkaBottleCapacity)
print(vodkaBottleLeft)

这给了我以下输出,确认它完全按照我想要的去做:

1000
500

现在,如果我让它为我调制使用 50ml (50) 伏特加的鸡尾酒,我想要一个 Python 脚本通过减去相应的量(在本例中为 50)来编辑“饱满度”值.

我被困在这一点上了。我一直在尝试像这样使用 json.dump 函数:

y = {'milliliters':1000} 
x = open(/path/to/data.json")
json.dump(y, x)
x.close()

但这让我在终端中出现以下错误:

fp.write(chunk)
io.UnsupportedOperation: not writable

我做错了,我什至可能在错误的轨道上,所以我很感激你的帮助!

您是要更新丰满度吗?

with open(“data.json”) as x:
    drinks = json.load(x)


vodkaBottleLeft = drinks['vodka']['fullness']
drinks['vodka']['fullness'] = vodkaBottleLeft - 50

with open(“data.json”, “w”) as x:
    json.dump(drinks, x)