Append new items to a Json array in Python_python中json数组的append

1. python存储Json格式的数据

import json
 
array = '{"drinks": ["coffee", "tea", "water"]}'

data = json.loads(array)
 
for element in data['drinks']:
    print element
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

这个简单的例子体现了 json 中 array 数据类型的使用。我们知道,json array 数据类型的添加数据的功能是非常重要的,因为不可能array数据都在代码中事先声明好。所以,下一个例子我们看看如何将array数据添加到json array数据类型中。

2. json array中添加数据

import json
 
array = '{"drinks": ["coffee", "tea", "water"]}'
data = json.loads(array)
 
 # print original josn array data
for element in data['drinks']:
    print element

# add a new item to json array
data['drinks'].append("orange juice")
for element in data['drinks']:
    print element
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

3. 我们制作一个简单的好玩的餐厅 Json 菜单

import json

# ini
person = '{"name": []}'
drinks = '{"liquid": []}'

# load json
person = json.loads(person)
drinks = json.loads(drinks)

# empty orders
for element in drinks['liquid']:
    print element
for element in person['name']:
	print element    

# new orders
person['name'].append("Alice")
drinks['liquid'].append("Coffee")

person['name'].append("Bob")
drinks['liquid'].append("Tea")

person['name'].append("Joe")
drinks['liquid'].append("Orange juice, hot, please.")

# print orders
for element in person['name']:
    print element

print '\n'
for element in drinks['liquid']:
    print element  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

这里写图片描述

我们是怎么知道的 Alice 喝 Coffee,而不是 Tea 的呢?事实上,我们人为地将 json 中 person array 的 items 顺序地对应到 json 中 drinks array 的 items中,比如,person array 的第一个 item 对应到 drinks array 的第一个 item;person adday 的第二个 item 对应到 drinks array 的第二个 item;以此类推。

这说明了一个严重的问题:自动化的程度还是不够,还需要人为半手工地操作。下一个小例子,我们就来解决这一个问题。

4. 改进的餐厅 Json 菜单

import json

# ini
orders = '{"person": [], "drinks": []}'

# load json
orders = json.loads(orders)

# new oders
orders['person'].append("Alice")
orders['drinks'].append("Coffee")

orders['person'].append("Bob")
orders['drinks'].append("Tea")

orders['person'].append('Joe')
orders['drinks'].append('Orange juice, hot, please')

# print orders
for i in range(0, len(orders['person'])):
	print 'person: ', orders['person'][i], ' drinks: ', orders['drinks'][i]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

这里写图片描述

参考
https://pythonspot.com/tag/json/