json数据是常见的一种互联网传输数据格式,这里记录了json解析的通用方法
JSON(JavaScript Object Notation)JavaScript对象表示法
一种简单的数据格式,比xml更轻巧。JSON是JavaScript的原生格式,这意味着在JavaScript中处理JSON数据不需要任何特殊的API或工具包
JSON的规则
- 映射用冒号(
":"
)表示。名称:值 - 并列的数据名称之间用逗号(
","
)分隔。名称1:值1,名称2:值2 - 映射的集合(对象)用大括号(
"{}"
)表示。{名称1:值1,名称2:值2} - 并列数据的集合(数组)用方括号(
"[]"
)表示
[
{名称1:值1,名称2:值2},
{名称1:值1,名称2:值2}
]
- 元素值可具有类型:string,number,object,array,true,false,null
JSON的两种格式
JSON对象的格式
写法:{JSON数据名称1:JSON数据的值1,JSON数据名称2:JSON数据的值2...}
{"name":"zhangsan","age":"20","addr":"nanjing"}
JSON数组的格式
写法:[JSON对象1,JSON对象2...]
[{"name":"lucy","age":20},{"name":"mary","age":30}]
JSON的解析
有很多的JSON开源框架,例如org.json,json-lib,gson等。常用org.json
官网:http://www.json.org/java/
常见API:(将json字符串转化成JSONObject对象)
JSONObject jb = new JSONObject(String source)
Object get(String key)
Int getInt(String key)
String getString(String key)
XXX getXXX(String key)
JSONArray getJsonArray(String key)
将json字符串转出JSONArray对象
JSONArray jsArray = new JSONArray(String source)
JSON解析示例
public void jsonTest() throws Exception{
String jstring = "{'name':'zhangsan','age':'20'}";
//通过一个具有json格式的字符串就可以创建一个json对象
JSONObject obj = new JSONObject(jstring );
//获取到json对象以后就可以通过key去取值,根据需求选择相关的getXXX方法
//可以获取的数据类型有:string,int,long,double,boolean,object
String name = obj.getString("name");
int age = obj.getInt("age");
System.out.println("name:"+name+",age:"+age);
String jsonArray = "[{'name':'zhangsan','age':'20'},{'name':'lisi','age':'30'}]";
//根据一个具有json数组格式的字符串,创建一个json数组对象
JSONArray array = new JSONArray(jsonArray);
for (int i = 0; i < array.length(); i++) {
//根据索引取出每一个jsonobject
JSONObject jsonObject = array.getJSONObject(i);
name = jsonObject.getString("name");
System.out.println(name);
}
}