JSON官方网站
JSON:JavaScript对象表示法(JavaScript Object Notation)。
JSON是储存和交换文本信息的语法。
类似XML,比XML更小、更快、更易解析。
JSON语法是JavaScript对象表示语法的子集。
JSON值可以是:
点击这里
JsonParser parser = new JsonParser();
{
"class": "101",
"student": [
{
"name": "张三",
"sex": 1
},
{
"name": "李四",
"sex": 1
},
{
"name": "王五",
"sex": 0
}
],
"Good": true
}
最外层为花括号{ },解析花括号{ },要定义一个JsonObject接收解析结果:
JsonParser parser = new JsonParser();
String str = "{\"class\":\"101\",\"student\":[{\"name\":\"张三\",\"sex\":1},{\"name\":\"李四\",\"sex\":1},{\"name\":\"王五\",\"sex\":0}],\"Good\":true}";
JsonObject object = (JsonObject) parser.parse(str);
这里要注意:如果解析一段json字符串,存放变量时不要忘记转义符号,一般在IDE内粘贴自带转义。
JsonParser parser = new JsonParser();
String str = "{\"class\":\"101\",\"student\":[{\"name\":\"张三\",\"sex\":1},{\"name\":\"李四\",\"sex\":1},{\"name\":\"王五\",\"sex\":0}],\"Good\":true}";
JsonObject object = (JsonObject) parser.parse(str);
String classname = object.get("class").getAsString();
boolean good = object.get("NB").getAsBoolean();
先从JsonObject对象中使用get(String s)方法获得json中名为s的值,然后根据值的类型,再使用getAs类型名()方法获得值。
通过观察发现,student的值为数组[ ],解析方括号[ ],要定义一个JsonArray接收解析结果:
JsonParser parser = new JsonParser();
String str = "{\"class\":\"101\",\"student\":[{\"name\":\"张三\",\"sex\":1},{\"name\":\"李四\",\"sex\":1},{\"name\":\"王五\",\"sex\":0}],\"Good\":true}";
JsonObject object = (JsonObject) parser.parse(str);
String classname = object.get("class").getAsString();
boolean good = object.get("NB").getAsBoolean();
JsonArray array = object.get("student").getAsJsonArray();
先从JsonObject对象中使用get(“student”)方法获得json中名为student的值,然后因为是json数组,所以使用getAsJsonArray()方法获得值,取到的是一个JsonObject的数组,我们还需要遍历数组去解析
JsonParser parser = new JsonParser();
String str = "{\"class\":\"101\",\"student\":[{\"name\":\"张三\",\"sex\":1},{\"name\":\"李四\",\"sex\":1},{\"name\":\"王五\",\"sex\":0}],\"Good\":true}";
JsonObject object = (JsonObject) parser.parse(str);
String classname = object.get("class").getAsString();
boolean good = object.get("NB").getAsBoolean();
JsonArray array = object.get("student").getAsJsonArray();
for (int i = 0; i < array.size(); i++) {
JsonObject student = array.get(i).getAsJsonObject();
String name = student.get("name").getAsString();
int sex = student.get("sex").getAsInt();
System.out.println(name+"\t"+sex);
}
如果想要创建一个这样的json文本:
{
"class": "101",
"student": [
{
"name": "张三",
"sex": 1
},
{
"name": "李四",
"sex": 1
},
{
"name": "王五",
"sex": 0
}
],
"Good": true
}
通过解析的原理,我们可以这样创建
JsonObject object = new JsonObject();
object.addProperty("class", "101");// 添加class元素
JsonArray array = new JsonArray();//新建JsonArray数组
JsonObject student1 = new JsonObject();
student1.addProperty("name", "张三");
student1.addProperty("sex", 1);
array.add(student1);//将JsonObject添加到JsonArray中
JsonObject student2 = new JsonObject();
student2.addProperty("name", "李四");
student2.addProperty("sex", 1);
array.add(student2);
JsonObject student3 = new JsonObject();
student3.addProperty("name", "王五");
student3.addProperty("sex", 0);
array.add(student3);
object.add("student", array);//添加student元素
object.addProperty("Good", true);// 添加Good元素
System.out.println(object);