JSON的本质就是一个字符串,只不过按照了特定的格式,所以JSON也是一种数据格式。
任何语言都可以使用JSON
JSON有两种语法:一种是对象,一种是数组
JSON对象
JSON对象是以键值对的形式存在{key:value,key:value…}
JSON数组
JSON数组是用[]包裹起来的结构,取值方式通过索引来获取,值的类型可以是数字、字符串、数组、对象等。
括号中包含的多为JSON对象;
原生JSON解析
JSON字符串转换成JSON对象
JSONObject json = new JSONObject(JSONstr);
- 思考如何将JSON字符串转成JavaBean对象
-
不带对象名的方法{key:value,key2:vallue2}
- 将JSON字符串转成JSON对象
- 通过get(xxx)方法,获取JSON中各个属性的值
- 创建javabean对象
- 将获取到的值给Javabean对象赋值
-
带对象名的方法{“person1”:{“address”:“深圳市”,“id”:1001,“name”:“Tom”}}
- JSONObject json = JSONObject(JsonStr).getJSONObject(“person1”);
- 通过get(xxx)方法,获取JSON中各个属性的值
- 创建javabean对象
- 将获取到的值给Javabean对象赋值
解析数组
[{“id”:1001,“name”:“Tom”,“address”:“北京市”},{“id”:1002,“name”:“Mary”,“address”:“上海市”}]
- 将jsonStr转成JSON数组
JSONArray jsonArray = new JSONArray(jsonStr);
- 思考如何将jsonStr转成一个数组或集合
- jsonStr转成JSONArray
- 遍历JSON数组,获取每一个JSON对象
- 使用jsonStr转javabean的方法,将每一个Json对象转成javabean对象
- 将转成的对象放入自己想要放入的地方
JSONArray jsonArrayy = new JSONArray(jsonStr);
List<People> list = new ArrayList<>();
for(int i = 0; i < jsonArray.length(); i++) {
JSONObject json = jsonArray[i];
int id = json.get("id");
String name = json.get("name");
String address = json.get("address");
People people = new People();
people.setId(id);
people.setName(name);
people.setAddress(address);
list.add(people);
}
生成JSON
即将Javabean对象或Javabean对象集合转成JSON对象或JSON数组
User user1 = new User();
User user2 = new User();
user1.setName("张三");
user1.setAge(18);
user2.setName("李四");
user2.setAge(20);
List<User> list = new ArrayList<>();
list.add(user1);
list.add(user2);
System.out.println(new JSONObject(user1));
System.out.println(new JSONArray(list));
FastJSON解析JSON(最常用)
public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本
public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray
public static final JSONObject parseObject(String text); // 把JSON文本转换成JSONObject
public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON文本转换为JavaBean
public static final JSONArray parseArray(String text); // 把JSON文本转换成JSONArray
public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本转换成JavaBean集合
总结
- JSON字符串,JavaBean转成JSON对象都使用如下方法转化
JSONObject json = new JSONObject(xxxx);
2 JSONArray字符串、集合转JSON数组也类似
JSONArray jsonArr = new JSONArray(xxxx);
- JOSN转成JavaBean的方法流程
- 使用json.get(“属性名”);获得指定属性的值
- 创建一个JavaBean对象,给该对象赋值;
- JOSN数组是JSON对象的集合
通过jsonArray.get(index); 来获得JSON对象 - JSON数组转集合,流程
获得JSON对象,再使用第3条的方法创建JavaBean对象,最后将所有的JavaBean对象放入数组中