JAVA回顾(三)

来源:互联网 发布:阿里云快照 编辑:程序博客网 时间:2024/05/16 09:00

JSON回顾

一、定义:JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。
二、基本结构:
1.对象:
对象在js中表示为“{}”扩起来的内容,数据结构为 {key:value,key:value,…}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。
比如:
①最简单的形式,可以用下面这样的 JSON 表示”名称 / 值对”:
{ “firstName”: “Brett” } 相当于==》firstName=Brett
②多个”名称 / 值对”串
{ “firstName”: “Brett”, “lastName”:”McLaughlin”, “email”: “aaaa” }
2.数组:
数组在js中是中括号“[]”扩起来的内容,数据结构为 [“java”,”javascript”,”vb”,…],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。
比如:
①含有1个变量的数组:
{ “people”: [
{ “firstName”: “Brett”, “lastName”:”McLaughlin”, “email”: “aaaa” },
{ “firstName”: “Jason”, “lastName”:”Hunter”, “email”: “bbbb”},
{ “firstName”: “Elliotte”, “lastName”:”Harold”, “email”: “cccc” }
]}
在这个示例中,只有一个名为 people的变量,值是包含三个条目的数组,每个条目是一个人的记录,其中包含名、姓和email。
②含有多个变量的数组:
{ “programmers”: [
{ “firstName”: “Brett”, “lastName”:”McLaughlin”, “email”: “aaaa” },
{ “firstName”: “Jason”, “lastName”:”Hunter”, “email”: “bbbb” },
{ “firstName”: “Elliotte”, “lastName”:”Harold”, “email”: “cccc” }
],
“authors”: [
{ “firstName”: “Isaac”, “lastName”: “Asimov”, “genre”: “science fiction” },
{ “firstName”: “Tad”, “lastName”: “Williams”, “genre”: “fantasy” },
{ “firstName”: “Frank”, “lastName”: “Peretti”, “genre”: “christian fiction” }
],
“musicians”: [
{ “firstName”: “Eric”, “lastName”: “Clapton”, “instrument”: “guitar” },
{ “firstName”: “Sergei”, “lastName”: “Rachmaninoff”, “instrument”: “piano” }
] }


JSON生成与解析

一、解析对象
1.不带对象名:
①格式:{“address”:”北京市”,”id”:1001,”name”:”Tom”}
②解析方法:
JSONObject json = new JSONObject(jsonString);
person.setId(json.getInt(“id”));
person.setName(json.getString(“name”));
person.setAddress(json.getString(“address”));
2.带对象名:
①格式:{“person1”:{“address”:”北京市”,”id”:1001,”name”:”Tom”}}
②解析方法:
JSONObject json = new JSONObject(jsonString).getJSONObject(“person1”);
person.setId(json.getInt(“id”));
person.setName(json.getString(“name”));
person.setAddress(json.getString(“address”));
3.对象套对象
①格式:{“person1”:{“address”:”北京市”,”id”:1001,”name”:”Tom”},”person2”:{“address”:”北京市”,”id”:1001,”name”:”Tom”}}
②解析方法:
JSONObject json1 = new JSONObject(jsonString).getJSONObject(“person1”);
person.setId(json1.getInt(“id”));
person.setName(json1.getString(“name”));
person.setAddress(json1.getString(“address”));
JSONObject json2 = new JSONObject(jsonString).getJSONObject(“person2”);
person.setId(json2.getInt(“id”));
person.setName(json2.getString(“name”));
person.setAddress(json2.getString(“address”));
二、解析数组
1.不带数组名:
①格式:[{“id”:1001,”name”:”Tom”,”address”:”北京市”},{“id”:1002,”name”:”Mary”,”address”:”上海市”}]
②解析方法:
List persons = new ArrayList();
JSONArray jsonArray = new JSONArray(jsonString);
for (int i = 0; i < jsonArray.length(); i++) {
Person person = new Person();
JSONObject json = (JSONObject) jsonArray.get(i);
person.setId(json.getInt(“id”));
person.setName(json.getString(“name”));
person.setAddress(json.getString(“address”));
persons.add(person);
}
persons->Tom,Mary
2.带数组名:
①格式:{“persons”:[{“id”:1001,”name”:”Tom”,”address”:”北京市”},{“id”:1002,”name”:”Mary”,”address”:”上海市”}]}
{key:数组}
②解析方法:
JSONObject jsonObject = new JSONObject(jsonString);
JSONArray jsonArray = jsonObject.getJSONArray(“persons”);
for (int i = 0; i < jsonArray.length(); i++) {
Person person = new Person();
JSONObject json = (JSONObject) jsonArray.get(i);
person.setId(json.getInt(“id”));
person.setName(json.getString(“name”));
person.setAddress(json.getString(“address”));
persons.add(person);
}
3.对象套数组
①格式:{“object”:{“persons”:[{“id”:1001,”name”:”Tom”,”address”:”北京市”},{“id”:1002,”name”:”Mary”,”address”:”上海市”}]}}
{“object”:对象}
②解析方法:
JSONObject jsonObject = new JSONObject(jsonString).getJSONObject(“object”);
JSONArray jsonArray = jsonObject.getJSONArray(“persons”);
for (int i = 0; i < jsonArray.length(); i++) {
Person person = new Person();
JSONObject json = (JSONObject) jsonArray.get(i);
person.setId(json.getInt(“id”));
person.setName(json.getString(“name”));
person.setAddress(json.getString(“address”));
persons.add(person);
}


FastJson

一、介绍:由阿里巴巴开发,是一种高性能的JSON解析工具
二、特点:支持多种数据类型,比如基本数据类型,集合,map,枚举,泛型等
三、使用:需要导包
1.解析对象
//使用FastJSON解析json对象
private static T getPerson(String jsonStirng,Class cls) {
T t = JSON.parseObject(jsonStirng, cls);
return t;
}
2.解析数组
//使用FastJSON解析json数组

private static <T> List<T> getPersonList(String jsonStirng,Class<T> cls) {List<T> list = new ArrayList<T>();list = JSON.parseArray(jsonStirng, cls);return list;}

Gson

一、介绍:由Google公司研发,又叫Google GSON,代码简洁
二、使用:需要导包
1.解析对象:
//使用反射机制解析json,此方式较灵活
private static T getPerson(String jsonString,Class cls) {
Gson gson = new Gson();//创建一个Gson对象
T t = gson.fromJson(jsonString, cls);//使用fromJson方法返回一个json对象
return t;
}
2.解析数组:
//使用Gson解析json数组
private static List getPersonList(String jsonString,Class cls) {
List list = new ArrayList();
Gson gson = new Gson();
//TypeToken是Gson提供的数据类型转换器,可支持各种数据集合类型的转换
list = gson.fromJson(jsonString, new TypeToken

0 0
原创粉丝点击