JSON简介
JSON(JavaScriptObject Notation)是一种轻量级的数据交换方式,
将对象转换成字符串对象进行信息发送,
JSON 需要导入第三方jar包
JSON数据作为目前网络中主流的数据传输格式之一,应用十分广泛
JSON解析的三种方式:
JSON
GSON
FASTJSON
JSON可以表示的数据:
对象:对象表示用“{}”扩起来的内容
数据结构为:{name:zhangsan,age:20}
数组:数组表示用“[]”扩起来的内容,
数据结构为:[“北京”,”上海”,”广州”]
将两种结合起来表示的方式:
{
“User”[{name:zhangsan,age:20},{name:lisi,age:3}]
}
含义:在对象中有个带有索引的数组,数组里面是以对象为元素
JSON解析简单例子《每种对象解析操作代码在不同类中有相同的颜色》:
(1) Person 类 属于实体类,用于生成类对象,里面有 name,age,address属性
(2) ServiceBean 生成要进行操作的对象
《1》用函数直接返回Person对象
《2》用函数返回list集合,集合元素为Person对象
《3》用函数返回list集合,集合元素为String的字符串
《4》用函数返回list集合 ,集合元素为map《》集合
(3) Jsonools 类
createJsonString能将所有种类的对象通过json解析调用方法转换成字符串
其他每个类是将对具有不同格式对象的字符串解析成对象
这个业务类实现了生成各种对象,有的类将这些对象装在集合对象里进行返回,有的直接将对象返回
// 自定义业务组件类
public class ServiceBean {
//返回一个实体对象Person
publicstatic Person getPerson(){
Person p=new Person("张三",20,"北京");
return p;
}
//返回实体集合对象publicstatic List<Person> getListPerson(){
List<Person> persons=newArrayList<Person>();
persons.add(new Person("张三",20,"北京"));
persons.add(new Person("李四",22,"上海"));
persons.add(new Person("小丽",25,"广州"));
persons.add(new Person("小梅",23,"深圳"));
persons.add(new Person("小芳",18,"湖北"));
persons.add(new Person("小郭",21,"东北"));
return persons;
}
//返回字符串的集合publicstatic List<String> getListString(){
List<String> strings=newArrayList<String>();
strings.add("北京");
strings.add("上海");
strings.add("广州");
strings.add("深圳");
strings.add("杭州");
return strings;
}
//返回map对象的集合publicstatic List<Map<String,Object>> getMaps(){
List<Map<String,Object>>maps=new ArrayList<Map<String,Object>>();
Map<String,Object> map1=newHashMap<String, Object>();
map1.put("name","小丽");
map1.put("age",18);
map1.put("addr","北京");
maps.add(map1);
Map<String,Object> map2=new HashMap<String,Object>();
map2.put("name","小梅");
map2.put("age",28);
map2.put("addr","上海");
maps.add(map2);
Map<String,Object> map3=newHashMap<String, Object>();
map3.put("name","小剑");
map3.put("age",20);
map3.put("addr","广州");
maps.add(map3);
return maps;
}
}
Person.java
package com.hsj.domain;
自定义Person类
publicclass Person {
//这里代码就省了,很简单,声明三个私有的name,age,address属性,并生成它们的get,set,toString方法,以及构造函数
}
//这个类实现了用同一个函数将不同对象转换成字符串,用不同函数将不同种类的字符串转换成相应的对象
JsonTools.java
/**
*自定义Json工具类.
* JSON工具类主要干以下两件事:
* A:将java对象转化成Json字符串
* B:将Json字符串还原成相应的Java对象
*/
public classJsonTools {
/**
*将java对象转化成Json字符串
*@param key json字符串中的键
*@param value json字符串中的对象
*@return json字符串
*/
public static StringcreateJsonString(String key,Object value){
//1.实例化Json对象
JSONObjectjsonObject=new JSONObject();
//2.将指定的键和value添加到Json对象中
jsonObject.put(key,value);
//3.将json对象转化成json字符串
StringjsonString=jsonObject.toString();
returnjsonString;
}
/**
* {"person":{"addr":"北京","age":20,"name":"张三"}}
*
* 将json字符串还原成java对象
*@param json json字符串
*@return java对象
*/
public static Person getPerson(Stringjson){
//1.实例化JSON对象
JSONObjectjsonObject=new JSONObject();
//2.将给定的json字符串还原成JSON对象
jsonObject=jsonObject.fromObject(json);
//3.解析JSON对象得到需要的数据
jsonObject=jsonObject.getJSONObject("person");
Stringname=jsonObject.getString("name");
intage=jsonObject.getInt("age");
Stringaddr=jsonObject.getString("addr");
Personp=new Person(name,age,addr);
return p;
}
/**
* {"persons":[
* {"addr":"北京","age":20,"name":"张三"},
* {"addr":"上海","age":22,"name":"李四"},
* {"addr":"广州","age":25,"name":"小丽"},
* {"addr":"深圳","age":23,"name":"小梅"},
* {"addr":"湖北","age":18,"name":"小芳"},
* {"addr":"东北","age":21,"name":"小郭"}
* ]
}
* 将给定的json字符串还原成java对象
*@param json json字符串
*@return java对象
*/
public static List<Person>getListPerson(String json){
List<Person>persons=new ArrayList<Person>();
//1.实例化JSON对象
JSONObjectjsonObject=new JSONObject();
//2.将指定的json字符串传递给json对象返回json对象
jsonObject=jsonObject.fromObject(json);
//3.解析Json字符串
JSONArrayjsonArray=jsonObject.getJSONArray("persons");
//获取json数组中元素的个数
intsize=jsonArray.size();
for(inti=0;i<size;i++){
jsonObject=jsonArray.getJSONObject(i);
Stringname=jsonObject.getString("name");
int age=jsonObject.getInt("age");
Stringaddr=jsonObject.getString("addr");
Person p=new Person(name,age,addr);
persons.add(p);
}
returnpersons;
}
/**
* {"citys":["北京","上海","广州","深圳","杭州"]}
* 将给定的json字符串还原成java对象
*@param json json字符串
*@return java对象
*/
public static List<String>getListString(String json){
List<String>strings=new ArrayList<String>();
JSONObjectjsonObject=new JSONObject();
jsonObject=jsonObject.fromObject(json);
JSONArrayjsonArray=jsonObject.getJSONArray("citys");
intsize=jsonArray.size();
for(inti=0;i<size;i++){
String city=jsonArray.get(i).toString();
strings.add(city);
}
returnstrings;
}
/**
* {"maps":[
* {"age":18,"name":"小丽","addr":"北京"},
* {"age":28,"name":"小梅","addr":"上海"},
* {"age":20,"name":"小剑","addr":"广州"}
* ]
* }
* 将给定的json字符串还原成java对象
*@param json json字符串
*@return java对象
*/
public staticList<Map<String,Object>> getMaps(String json){
List<Map<String,Object>>maps=new ArrayList<Map<String,Object>>();
JSONObjectjsonObject=new JSONObject();
jsonObject=jsonObject.fromObject(json);
JSONArrayjsonArray=jsonObject.getJSONArray("maps");
intsize=jsonArray.size();
for(inti=0;i<size;i++){
jsonObject=jsonArray.getJSONObject(i);
Stringname=jsonObject.getString("name");
intage=jsonObject.getInt("age");
Stringaddr=jsonObject.getString("addr");
Map<String,Object> map=newHashMap<String, Object>();
map.put("name",name);
map.put("age",age);
map.put("addr",addr);
maps.add(map);
}
returnmaps;
}
}
//这个类是主类 ,负责获取ServiceBean中的对象内容,通过JsonTools方法转换成字符串,再将字符串通过对应的方法转换成相应的对象
TestRawParseJsonDemo01.java
publicclass TestRawParseJsonDemo01 {
public static void main(String[] args) {
/* //1.从数据源中得到数据
Personp1=ServiceBean.getPerson();
//2.将对象转化成json字符串
StringjsonString=JsonTools.createJsonString("person",p1);
//{"person":{"addr":"北京","age":20,"name":"张三"}}
System.out.println("jsonString="+jsonString);
//3.将给定的json字符串还原成java对象
Personp=JsonTools.getPerson(jsonString);
System.out.println("p="+p);
*/
/*//1.从数据源中得到数据
List<Person>persons=ServiceBean.getListPerson();
//2.将java对象转化成json字符串
StringjsonString=JsonTools.createJsonString("persons",persons);
*{"persons":[
* {"addr":"北京","age":20,"name":"张三"},
* {"addr":"上海","age":22,"name":"李四"},
* {"addr":"广州","age":25,"name":"小丽"},
* {"addr":"深圳","age":23,"name":"小梅"},
* {"addr":"湖北","age":18,"name":"小芳"},
* {"addr":"东北","age":21,"name":"小郭"}
* ]
* }
System.out.println("jsonString="+jsonString);
//3.将给定的json字符串还原成java对象
List<Person>json_persons=JsonTools.getListPerson(jsonString);
System.out.println("json_persons="+json_persons);
*/
/*//1.得到数据源
List<String>strings=ServiceBean.getListString();
//2.将给定的java对象转化成json字符串
StringjsonString=JsonTools.createJsonString("citys",strings);
//{"citys":["北京","上海","广州","深圳","杭州"]}
System.out.println("jsonString="+jsonString);
//3.根据json字符串还原java对象
List<String>json_strings=JsonTools.getListString(jsonString);
System.out.println("json_strings="+json_strings);*/
//1.得到数据源
List<Map<String,Object>> maps=ServiceBean.getMaps();
//2.将给定的java对象转化成json字符串
StringjsonString=JsonTools.createJsonString("maps",maps);
/*
* {"maps":[
* {"age":18,"name":"小丽","addr":"北京"},
* {"age":28,"name":"小梅","addr":"上海"},
* {"age":20,"name":"小剑","addr":"广州"}
* ]
* }
*/
System.out.println("jsonString="+jsonString);
//3.将给定的json字符串还原成java对象
List<Map<String,Object>>json_maps=JsonTools.getMaps(jsonString);
System.out.println("json_maps="+json_maps);
}
}