JSON
什么是JSON
JSON: JavaScript Object Notation(JavaScript 对象表示法)
JSON 是存储和交换文本信息的语法,类似 XML。
JSON 比 XML 更小、更快,更易解析。
JSON 易于人阅读和编写。
JSON 语法规则
JSON 语法是 JavaScript 对象表示语法的子集。
- 数据在名称/值对中
- 数据由逗号 , 分隔
- 使用斜杆 \ 来转义字符
- 大括号 {} 保存对象
- 中括号 [] 保存数组,数组可以包含多个对象
JSON 的两种结构
对象
大括号 {} 保存的对象是一个无序的名称/值对集合。一个对象以左括号 { 开始, 右括号 } 结束。每个"键"后跟一个冒号 :,名称/值对使用逗号 , 分隔。
{key1 : value1, key2 : value2, ... keyN : valueN }
数组
中括号 [] 保存的数组是值(value)的有序集合。一个数组以左中括号 [ 开始, 右中括号 ] 结束,值之间使用逗号 , 分隔。
值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array),它们是可以嵌套。
[
{ key1 : value1-1 , key2:value1-2 },
{ key1 : value2-1 , key2:value2-2 },
{ key1 : value3-1 , key2:value3-2 },
...
{ key1 : valueN-1 , key2:valueN-2 },
]
# 案例
{
"sites": [
{ "name":"菜鸟教程" , "url":"www.runoob.com" },
{ "name":"google" , "url":"www.google.com" },
{ "name":"微博" , "url":"www.weibo.com" }
]
}
# 在上面的例子中,对象 sites 是包含三个对象的数组。每个对象代表一条关于某个网站(name、url)的记录。
其中:
名称/值对集合的书写规则是:
key : value
# 案例
"name" : "菜鸟教程"
JSON 值可以是:
- 数字(整数或浮点数)
- 字符串(在双引号中)
- 逻辑值(true 或 false)
- 数组(在中括号中)
- 对象(在大括号中)
- null
python json
json.loads
df.loc[:, '商品列表_json'] = df.loc[:, '商品列表'].apply(json.loads)
df = df.explode('商品列表_json')
df['sku'] = df['商品列表_json'].apply(lambda x: x['sku'])
df['sku_qty'] = df['商品列表_json'].apply(lambda x: x['count'])
to_json
df = pd.DataFrame({
'name': ['Alice', 'Bob', 'Alice', 'Bob'],
'math': [80, 90, 85, 95],
'english': [75, 85, 80, 90],
'chinese': [90, 95, 85, 80]
})
cols = ['math','english','chinese']
df['json_col'] = df[cols].apply(lambda x: x.to_json(), axis=1)