JOSN用于给数据添加标记全称是javaScript Object Notation
是一种轻量级的数据交换格式
这种格式最早应用于javaScript中,JSON 语法是javaScript对象表示语法的子集
在java中提供了解析JSON格式的类库
具有良好的可读性和快速编写的特性
Json里的数据以一种键值对的形式存在
JSON 有三种首先是java官方的解析开元jar包 还有一种是谷歌的JSON 还有一种阿里的Fast-JSON
{} 双括号表示对象
[] 中括号表示数组
"" 双引号内是属性或值
: 冒号表示后者是前者的值(这个值可以是字符串、数字、也可以是另一个数组或对象)
所以 {"name": "Michael"} 可以理解为是一个包含name为Michael的对象
而[{"name": "Michael"},{"name": "Jerry"}]就表示包含两个对象的数组
当然了,你也可以使用{"name":["Michael","Jerry"]}来简化上面一部,这是一个拥有一个name数组的对象
首先是java官方的JSON
JSON解析
package com.qf.demo;
import java.util.ArrayList;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
public class Test3 {
public static void main(String[] args) {
String string="[{name:'zhangsan',age:20},{name:'lisi',age:21},{name:'wangwu',age:22}]";
try {
ArrayList<Person> persons = new ArrayList<>();
JSONArray array = new JSONArray(string);
for (int i = 0; i < array.length(); i++) {
JSONObject object = array.getJSONObject(i);// 下标从0开始
String name = object.getString("name");
int age = object.getInt("age");
Person person = new Person(name, age);
persons.add(person);
}
System.out.println(persons);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
反向操作
package com.qf.demo2;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
public class Test3 {
public static void main(String[] args) {
// {"no":1,"name":"android","employees":[{"name":"zhangsan","age":3},{"name":"lisi","age":5},{"name":"wangw","age":2}]}
JSONObject object = new JSONObject();
try {
object.put("no", 1);
object.put("name", "android");
JSONArray array = new JSONArray();
JSONObject object2 = new JSONObject();
object2.put("name", "zhangsan");
object2.put("age", 3);
array.put(object2);
JSONObject object3 = new JSONObject();
object3.put("name", "lis");
object3.put("age", 5);
array.put(object3);
JSONObject object4 = new JSONObject();
object4.put("name", "wangwu");
object4.put("age", 6);
array.put(object4);
object.put("employees", array);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(object);
}
}
网友评论