Published: 2017-01-27 23:00:00
By ytwan
In Program .
tags: things
JSON是一种轻量级的数据转换格式,json文件占带宽比XML文件小。
常规操作包括生成JSON字符串、解析JSON字符串
JSON建构于两种结构:
1. "名称/值"对的集合(A collection of name/value pairs)。
不同的语言中,它被理解为对象(object),
记录(record),结构(struct),字典(dictionary),
哈希表(hash table),有键列表(keyed list),
或者关联数组 (associative array)。
2. 值的有序列表(An ordered list of values)。
在大部分语言中,它被理解为数组(array)。
规则:
1)映射用冒号(“:”)表示。名称:值
2)并列的数据之间用逗号(“,”)分隔。名称1:值1,名称2:值2
3) 映射的集合(对象)用大括号(“{}”)表示。{名称1:值1,名称2:值2}
4) 并列数据的集合(数组)用方括号(“[]”)表示
{} 双括号表示对象
[] 中括号表示数组
一个JSON数组——JSONArray
[{"name":"胡小" , "age":26 , "male":true},{"name":"赵小" , "age":27 , "male":false}]
R 语言中的JSON处理
install.packages( "rjson" ) -- 包含 fromJSON(), newJSONParser(), toJSON()
# 加载包
library ( "rjson" )
# Give the input file name to the function.
result <- fromJSON( file = "inputfile.json" )
print ( result)
# 数据类型转换
json2data_frame <- as.data.frame ( result)
Python中JSON
I 、自带的包 import json
01. 把一个 Python 对象编码转换成 Json 字符串
json . dumps ( ) 方法对简单数据类型
自定义类型的数据结构, json 模块默认是没法处理的,会抛出异常: TypeError xx is not JSON serializable ,
此时你需要自定义一个转换函数 :
02. 把 Json 格式字符串解码转换成 Python 对象
json . loads ( )
dumps 是将 dict 转化成 str 格式, loads 是将 str 转化成 dict 格式
II 、 pandas 中的 JSON
如果是 Series 转 json , to_json ()
默认的 orient 是 'index'
orient 可选参数有 { 'split' , 'records' , 'index' }
如果是 DataFrame 转 json ,
默认的 orient 是 'columns' ,
orient 可选参数有 { 'split' , 'records' , 'index' , 'columns' , 'values' }
json 的格式如下
split , dict like 样式为 { index -> [ index ], columns -> [ columns ], data -> [ values ]}
records , list like 样式为 [{ column -> value }, … , { column -> value }]
index , dict like 样式为 { index -> { column -> value }}
columns , dict like 样式为 { index -> { column -> value }}
values , 样式 just the values array
table , dict like 样式为 { 'schema' : { schema }, 'data' : { data }} ,和 records 类似
保存数据
df . to_json ( filename ) :以 Json 格式导出数据到文本文件
Java/Scala中的JSON解析
01. jackson
jackson - core - 2.2.3 . jar (核心 jar 包) jackson - annotations - 2.2.3 . jar (该包提供 Json 注解支持)
jackson - databind - 2.2.3 . jar
JSON 的三种处理方式
Jackson 提供了三种可选的 JSON 处理方法(一种方式及其两个变型):
001. 流式 API :(也称为 "增量分析/生成" ) 读取和写入 JSON 内容作为离散事件。
org . codehaus . jackson . JsonParser 读, org . codehaus . jackson . JsonGenerator 写。
002. 树模型 :提供一个 JSON 文档可变内存树的表示形式。
org . codehaus . jackson . map . ObjectMapper 生成树 ;树组成 JsonNode 节点集。
树模型类似于 XML DOM 。
003. 数据绑定: JSON 和 POJO 相互转换,基于属性访问器规约或注解。
有 两种变体: 简单 和 完整 的数据绑定:
简单数据绑定: 是指从 Java Map 、 List 、 String 、 Numbers 、 Boolean 和空值进行转换
完整数据绑定 :是指从任何 Java bean 类型 (及上文所述的 "简单" 类型) 进行转换
org . codehaus . jackson . map . ObjectMapper 对两个变种,
进行编组( marshalling )处理 (写入 JSON ) 和反编组( unmarshalling ,读 JSON )。
引入:
* ObjectMapper 是 JSON 操作的核心
* Jackson 的 JSON 操作在 ObjectMapper 中实现
User user = new User ();
ObjectMapper mapper = new ObjectMapper ();
//User类转JSON
//输出结果:{"name":"zhanli","age":19,"birthday":82300,"email":"zhanli@163.com"}
String json = mapper . writeValueAsString ( user );
System . out . println ( json );
//mapper.readValue
02.f asterjson
引用: import com . alibaba . fastjson . JSON
//序列化
JSON . toJSONString 把对象 o 转化为 JSON 格式的文本
JSON . toJSONBytes
//信息反序列化
JSON . parseObject ( jsonString , Object . class );
// 将json字符串转成一个对象
JSON . parseArray
eg :
val jsonObj = JSON . parseObject ( firstloor )
val test02 = JSON . parseObject ( jsonObj . getString ( "jsonData02" ))
JSON . parseObject ( test02 . get ( "level3" ). toString )
常用数据数据源:
常用的数据文件格式: csv txt xls xlsx
常用的数据转换格式: json xml html
常用的数据存储方式: 数据库
参考:
pandas.DataFrame.to_json按行转json http://blog.csdn.net/huanbia/article/details/72674832