Json
json简介
JSON 是纯文本,JSON 具有“自我描述性”(人类可读),JSON 具有层级结构(值中存在值),JSON 可通过 JavaScript 进行解析,JSON 数据可使用 AJAX 进行传输。对于 AJAX 应用程序来说,JSON 比 XML 更快更易使用。
JSON 数据的书写格式是:名称/值对。
"name" : "value"
读取 JSON 字符串
JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串(伪对象),或者在异步应用程序中将字符串从 Web 客户端传递给服务器端程序
String json1 = "{name:'小明',age:1,sex:null}";
将字符串转化成为json对象
JSONObject json = new JSONObject(json1);
根据key获取json对象中对应的属性
Object name = json.get("name");
相应方法:
has(key) : 判断JSON中是否存在指定的key
System.out.println(json.has("name"));
//字段是否为空
System.out.println(json.isNull("sex"));
//获取所有的key
Iterator keys = json.keys();
while(keys.hasNext()) {
System.out.println(keys.next());
}
//获取元素的个数
System.out.println(json.length());
若key不存在则返回默认值 null
System.out.println(json.opt("name"));
System.out.println(json.opt("phone"));
System.out.println(json.optBoolean("phone"));
//根据值指定返回ture和false
System.out.println(json.optBoolean("phone", false));
//添加字段
JSONObject put = json.put("realname", "江小白");
System.out.println(put);
json.remove("realName");
返回所有的key
返回所有的key
JSONArray names = json.names();
for(int i=0 ;i<names.length();i++) {
Object object = names.get(i);
System.out.println(object);
}
将json对象转换为Map
String json1 = "{name:'小明',age:1,sex:null}";
JSONObject json = new JSONObject(json1);
Map< String, Object> map = new HashMap<String, Object>();
Iterator keys = json.keys();
while(keys.hasNext()) {
String key = keys.next().toString();
map.put(key, json.get(key));
}
System.out.println(map);
将json字符串转化为java实体
String json1 = "{name:'小明',age:1,sex:null}";
JSONObject json = new JSONObject(json1);
Student stu = new Student();
stu.setName(json.getString("name"));
stu.setAge(json.getInt("age"));
stu.setSex(json.getString("sex"));
System.out.println(stu.toString());
json字符串转数组
String json = "[{'name':'小青','age':18,'sex':'男'},{ 'name':'小白','age':18,'sex':'女' }]";
JSONArray arr = new JSONArray(json);
int length = arr.length();
Student student = new Student("小红", 18, "女");
List<Student> list = new ArrayList<>();
list.add(student);
arr.put(list);
for(int i =0;i<length;i++) {
Object object = arr.get(i);
System.out.println(object);
}
arr.put("{'name':ll,'age':18,'sex':'女'}");
System.out.println(arr);
System.out.println(arr.get(2));
json字符串转对象
//Student2实体类省略
String str ="{'code':200,'message':'SUCCESS', "
+ "'data':[{'name':'小青','age':18,'sex':'男','like':['篮球','足球']},{ 'name':'小白','age':18,'sex':'女' ,'like':['篮球','足球'] }]}";
JSONObject jsonObject = new JSONObject(str);
JSONArray jsonArray = jsonObject.getJSONArray("data");
List<Student2> list = new ArrayList<Student2>();
for(int i = 0 ;i<jsonArray.length();i++) {
JSONObject obj = jsonArray.getJSONObject(i);
Student2 student2 = new Student2();
student2.setName(obj.getString("name"));
student2.setAge(obj.getInt("age"));
student2.setSex(obj.getString("sex"));
JSONArray like = obj.getJSONArray("like");
List<String> likes = new ArrayList<String>();
for(int j=0;j<like.length();j++) {
likes.add(like.getString(j));
}
student2.setLike(likes);
list.add(student2);
阿里-fastJSON解析
在fastJSON核心方法:
parse(str) : 将json格式的字符串转化为各种类型
toJSONString(Object) : 将各种类型的数据转化为JSON字符串
package com.czq.fastJson;
import java.util.ArrayList;
import java.util.List;
import com.alibaba.fastjson.JSON;
import com.czq.json.Student2;
public class FastJSONDemo {
//字符串转对象
// public static void strToBean() {
// String json1 = "{'name':'江小白','age':18,'sex':'男'}";
// Student student = JSON.parseObject(json1,Student.class);
// System.out.println(student);
// }
//字符串转集合
// public static void str2List() {
// String str = "{'code':200,'message':'SUCCESS','data':[{'name':'张三','age':18,'sex':'男','like':['篮球','足球']},{'name':'李四','age':18,'sex':'男','like':['篮球','足球']}]}";
// JSONObject parseObject = JSON.parseObject(str);
// String object = parseObject.getString("data");
// System.out.println(object);
// JSON.parseArray(object,Student2.class);
// }
//对象转字符串
// public static void str2Bean() {
// Student2 stu = new Student2("小猫",18,"男",null);
// String jsonString = JSON.toJSONString(stu);
// System.out.println(jsonString);
// }
//集合转字符串
public static void listToStr() {
List<Student2> stu = new ArrayList<Student2>();
List<String> likes = new ArrayList<String>();
Student2 student1 = new Student2("小红",18,"女",likes);
Student2 student2 = new Student2("小红",18,"女",likes);
likes.add("足球");
likes.add("篮球");
stu.add(student1);
stu.add(student2);
System.out.println(JSON.toJSONString(stu));
System.out.println(stu);
}
public static void main(String[] args) {
//strToBean();
//str2List();
//str2Bean();
listToStr();
}
}
运行结果
Student [name=江小白, age=18, sex=男]
[{"age":18,"like":["篮球","足球"],"name":"张三","sex":"男"},{"age":18,"like":["篮球","足球"],"name":"李四","sex":"男"}]
{"age":18,"name":"小猫","sex":"男"}
[{"age":18,"like":["足球","篮球"],"name":"小红","sex":"女"},{"age":18,"like":["足球","篮球"],"name":"小红","sex":"女"}]
[Student [name=小红, age=18, sex=女], Student [name=小红, age=18, sex=女]]
Google-GSON解析
package com.czq.GJson;
import java.util.ArrayList;
import java.util.List;
import com.czq.json.Student;
import com.czq.json.Student2;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
public class GsonDemo {
public static void str2Bean() {
String str = "{'name':'xxx','age':18,'sex':'男'}";
Gson json = new Gson();
Student student = json.fromJson(str, Student.class);
System.out.println(student);
}
public static void str2List() {
String str = "['qq','ww','ee']";
Gson json = new Gson();
List fromJson = json.fromJson(str, List.class);
System.out.println(fromJson);
}
public static void strToList2() {
String str = "[{'name':'张三','age':18,'sex':'男','like':['篮球','足球']},{'name':'李四','age':18,'sex':'男','like':['篮球','足球']}]";
Gson gson = new Gson();
List fromJson = gson.fromJson(str, List.class);
Object students = gson.fromJson(str, new TypeToken<List<Student2>>() {}.getType());
System.out.println(fromJson.size());
System.out.println(fromJson);
System.out.println(fromJson.get(0));
System.out.println(students);
}
public static void bean2Str() {
Student stu = new Student("ww",12,"nv");
Gson gson = new Gson();
System.out.println(gson.toJson(stu));
}
public static void listToStr() {
List<Student2> students = new ArrayList<Student2>();
List<String> likes = new ArrayList<String>();
likes.add("书法");
likes.add("画画");
Student2 st1 = new Student2("韩梅梅", 18, "女", likes);
Student2 st2 = new Student2("Lucy", 18, "女", likes);
students.add(st1);
students.add(st2);
Gson gson = new Gson();
String stu = gson.toJson(students);
System.out.println(stu);
}
public static void main(String[] args) {
str2Bean();
str2List();
strToList2();
bean2Str();
listToStr();
}
}
运行结果
Student [name=xxx, age=18, sex=男]
[qq, ww, ee]
2
[{name=张三, age=18.0, sex=男, like=[篮球, 足球]}, {name=李四, age=18.0, sex=男, like=[篮球, 足球]}]
{name=张三, age=18.0, sex=男, like=[篮球, 足球]}
[Student [name=张三, age=18, sex=男], Student [name=李四, age=18, sex=男]]
{"name":"ww","age":12,"sex":"nv"}
[{"name":"韩梅梅","age":18,"sex":"女","like":["书法","画画"]},{"name":"Lucy","age":18,"sex":"女","like":["书法","画画"]}]