json解析
一、本文简介
对json的数据格式、数据解析、解析方式的讲解。
本文在2016年书写,总结较早,可能会与当前流行的json包有所出入,仅做参考。
二、json引包
第一种:json-lib:添加jar包后,使用时引入net.sf.json。
JSON-lib包是一个beans,collections,maps,java arrays 和XML和JSON互相转换的包,主要就是用来解析Json数据。
第二种:org.json:引入内置的org.json。
第三种:google.gson.Gson:添加jar包后,使用时引入google.gson。
将一个数据转换成 json 串,并使用 Gson.toJson();
将数组序列化为 JSON,以及Gson.fromJson() 将 JSON 串反序列化为 java 数组。
json-lib和org.json的使用几乎是相同的,区别如下:
1、org.json比json-lib要轻量得多,没有依赖任何其他jar包。
2、json-lib在构造bean和解析bean时比org.json要方便的多,json-lib可直接与bean互相转换,
而org.json不能直接与bean相互转换而需要map作为中转,若将bean转为json数据,首先需要先将bean转换为map再将map转为json,比较麻烦。
三、json的数据格式
第一种:对象
用{ }开头括住,数据结构为 {key:value,key:value,…}的键值对;
属性值value的类型可以是 数字、字符串、数组、对象几种。
第二种:数组
用[ ]开头括住,数据结构为 [“字段值”,”字段值”,”字段值”,…];
字段值的类型可以是 数字、字符串、数组、对象几种。
(可给对象和数组取名;一个对象理解为一个元素,一个元素中有包括多个键值对)
常见的格式:
{ 键:值,键:值,…} :把键值对作为对象元素
[{键:值,…},{键:值,…},…] :把对象作为数组元素
{ “映射名1”:[{键:值,…},{键:值,…}] ,”映射名2”:[{键:值,…},{键:值,…}] } :再把数组作为元素
四、json的数据解析(用第二种引包)
[ ] 表示数组
:映射关系——>名:值 或 映射对象:{ } 或 映射数组:[]
4.1、 { 键:值,键:值,…}
{ }开头且仅有{ }:表示Object型
例如:
1 | String jsonStr = {"name":"jackson","age":100}, |
4.2、[{键:值,…},{键:值,…},…]
[]开头中又有{ }:数组数据,用JSONArray
一个数组元素内 又可有多个名/值数据(前面可以有个映射名)
例如:
1 | String jsonStr= "[{'first':'1','second':'11'},{'first':'2','second':'22'},{'first':'3','second':'33'}]"; |
4.3、{ “映射名1”:[{键:值,…},{键:值,…}] ,”映射名2”:[{键:值,…},{键:值,…}] }
{ }开头且内有[{ }{ }…]:
例如:(Object中有Array)
1 | jsonStr = {"message":"success","result":[{"surveyid":"1","surveyname":"B"}{surveyid":"2","surveyname":"C"}]}; |
五、json数据换转
.fromObject( ): 内置的org.json包中没有这个方法;json-lib的jar包中才有。
1 | //List集合转换成json方法 |
本文链接: https://www.yinhanlei.com/2019/11/26/devel_json/
版权声明:本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。若转载、摘录本博客内的作品,请注明出处!
侵权告知:如果本博客内涉及到任何侵权内容,请通过邮件[email protected]告知侵权内容。 本人看到邮件后将立即标注原文出处或删除侵权内容。