Tôi đang làm việc trong một dự án trong đó Raspberry Pi điều khiển một số máy bơm 12V để cuối cùng làm cocktail. Điều này đang chạy trong bình, trên một máy chủ web địa phương [PI]. Có nhiều chai rượu với ống được ghép với máy bơm và máy bơm được điều khiển thông qua các chân GPIO trên PI. Tất cả điều này hoạt động khá tốt.
Tôi muốn thêm một chức năng ngăn cản tôi sản xuất một ly cocktail nếu khả năng của rượu còn lại trong chai liên quan là không đủ. Tôi đã chọn tạo tệp .json vì nó nhẹ và phù hợp với nhu cầu của tôi. Một đối tượng trong tệp .json của tôi trông như thế này:
"vodka": {
"id":"3",
"milliliters":1000,
"fullness":500,
"available": true
}
Trường hợp 'mililiter' đại diện cho khả năng của một chai đầy đủ và 'đầy đủ', bao nhiêu còn lại trong chai.
Nó 'đọc' các giá trị và lưu trữ chúng trong một biến Python như:
x = open[data.json"]
drinks = json.load[x]
vodkaBottleCapacity = [drinks['vodka']['milliliters']]
vodkaBottleLeft = [drinks['vodka']['fullness']]
Tôi đã kiểm tra nếu điều này hoạt động bằng cách sử dụng đơn giản:
print[vodkaBottleCapacity]
print[vodkaBottleLeft]
Điều này mang lại cho tôi đầu ra sau, xác nhận rằng nó đã làm chính xác những gì tôi muốn nó làm:
1000
500
Bây giờ nếu tôi để nó làm cho tôi một loại cocktail sử dụng 50ml [50] vodka, tôi muốn một tập lệnh Python để chỉnh sửa giá trị "đầy đủ" bằng cách trừ đi số lượng tương ứng [50 trong trường hợp này].
Tôi đang bị mắc kẹt vào thời điểm này. Tôi đã cố gắng sử dụng chức năng json.dump như thế này:
y = {'milliliters':1000}
x = open[/path/to/data.json"]
json.dump[y, x]
x.close[]
Nhưng điều này cho tôi lỗi sau trong thiết bị đầu cuối:
fp.write[chunk]
io.UnsupportedOperation: not writable
Tôi đang làm điều này sai và tôi thậm chí có thể đi sai đường để tôi có thể đánh giá cao sự giúp đỡ của bạn!
JSON là một cú pháp để lưu trữ và trao đổi dữ liệu.
JSON là văn bản, được viết với ký hiệu đối tượng JavaScript.
JSON trong Python
Python có một gói tích hợp có tên json
, có thể được sử dụng để làm việc với dữ liệu JSON.
Thí dụ
Nhập mô -đun JSON:
Nhập JSON
Parse JSON - Chuyển đổi từ JSON sang Python
Nếu bạn có chuỗi JSON, bạn có thể phân tích nó bằng cách sử dụng phương thức json.loads[]
.
Thí dụ
Chuyển đổi từ JSON sang Python:
Nhập JSON
# một số json: x = & nbsp; '{"Tên": "John", "Tuổi": 30, "Thành phố": "New York"}'
x = '{ "name":"John", "age":30, "city":"New York"}'
# parse x: y = json.loads [x]
y = json.loads[x]
# Kết quả là một từ điển Python: in [y ["tuổi"]]]
print[y["age"]]
Hãy tự mình thử »
Chuyển đổi từ Python sang JSON
Nếu bạn có một đối tượng Python, bạn có thể chuyển đổi nó thành chuỗi JSON bằng cách sử dụng phương thức json.dumps[]
.
Thí dụ
Chuyển đổi từ Python sang JSON:
Nhập JSON
# một số json: x = & nbsp; '{"Tên": "John", "Tuổi": 30, "Thành phố": "New York"}'
x = {
"name": "John",
"age": 30,
"city": "New York"
}
# parse x: y = json.loads [x]
y = json.dumps[x]
# Kết quả là một từ điển Python: in [y ["tuổi"]]]
print[y]
Hãy tự mình thử »
Chuyển đổi từ Python sang JSON
- Nếu bạn có một đối tượng Python, bạn có thể chuyển đổi nó thành chuỗi JSON bằng cách sử dụng phương thức
json.dumps[]
. - Chuyển đổi từ Python sang JSON:
- # một đối tượng python [dict]: x = {& nbsp; "Tên": "John", & nbsp; "Tuổi": 30, & NBSP; "Thành phố": "New York"}
- # Chuyển đổi thành json: y = json.dumps [x]
- int
- float
- # Kết quả là chuỗi JSON: print [y]
- Bạn có thể chuyển đổi các đối tượng Python của các loại sau, thành chuỗi JSON:
- DIGN
Thí dụ
danh sách
Nhập JSON
# một số json: x = & nbsp; '{"Tên": "John", "Tuổi": 30, "Thành phố": "New York"}'
print[json.dumps[["apple", "bananas"]]]
print[json.dumps[["apple", "bananas"]]]
print[json.dumps["hello"]]
print[json.dumps[42]]
print[json.dumps[31.76]]
print[json.dumps[True]]
print[json.dumps[False]]
print[json.dumps[None]]
Hãy tự mình thử »
Chuyển đổi từ Python sang JSON
# một đối tượng python [dict]: x = {& nbsp; "Tên": "John", & nbsp; "Tuổi": 30, & NBSP; "Thành phố": "New York"} | # Chuyển đổi thành json: y = json.dumps [x] |
# Kết quả là chuỗi JSON: print [y] | Bạn có thể chuyển đổi các đối tượng Python của các loại sau, thành chuỗi JSON: |
DIGN | Bạn có thể chuyển đổi các đối tượng Python của các loại sau, thành chuỗi JSON: |
DIGN | danh sách |
Tuple | sợi dây |
ĐÚNG VẬY | sợi dây |
ĐÚNG VẬY | Sai |
Không có | Chuyển đổi các đối tượng Python thành chuỗi JSON và in các giá trị: |
in [json.dumps [{"name": "john", "tuổi": 30}]] in [json.dumps [["apple", "chuối"]]] in [json.dumps [["apple" . [Sai]] In [json.dumps [none]] | Khi bạn chuyển đổi từ Python sang JSON, các đối tượng Python được chuyển đổi thành tương đương JSON [JavaScript]: |
Thí dụ
Python
Nhập JSON
Json
"name": "John",
"age": 30,
"married": True,
"divorced": False,
"children": ["Ann","Billy"],
"pets": None,
"cars": [
{"model": "BMW 230", "mpg": 27.5},
{"model": "Ford Edge", "mpg": 24.1}
]
}
print[json.dumps[x]]
Hãy tự mình thử »
Chuyển đổi từ Python sang JSON
Nếu bạn có một đối tượng Python, bạn có thể chuyển đổi nó thành chuỗi JSON bằng cách sử dụng phương thức json.dumps[]
.
Chuyển đổi từ Python sang JSON:
Thí dụ
# một đối tượng python [dict]: x = {& nbsp; "Tên": "John", & nbsp; "Tuổi": 30, & NBSP; "Thành phố": "New York"}
# Chuyển đổi thành json: y = json.dumps [x]
Hãy tự mình thử »
Chuyển đổi từ Python sang JSON
Thí dụ
Nếu bạn có một đối tượng Python, bạn có thể chuyển đổi nó thành chuỗi JSON bằng cách sử dụng phương thức json.dumps[]
.
Chuyển đổi từ Python sang JSON:
Hãy tự mình thử »
Chuyển đổi từ Python sang JSON
Nếu bạn có một đối tượng Python, bạn có thể chuyển đổi nó thành chuỗi JSON bằng cách sử dụng phương thức json.dumps[]
.
Thí dụ
Chuyển đổi từ Python sang JSON:
# một đối tượng python [dict]: x = {& nbsp; "Tên": "John", & nbsp; "Tuổi": 30, & NBSP; "Thành phố": "New York"}
Hãy tự mình thử »