json解析

来源:互联网 发布:藏刀不能在淘宝卖 编辑:程序博客网 时间:2024/05/01 13:07
1、json:JavaScript Object  Notation
                  就是一个字符串
2、json组成:名值对
      { :json对象,JSONObject
      [ :json数组,JSONArray
3、对象:{ 名值对} 多个名值对之间逗号隔开
4、数组:[ 数组元素值] ,多个值之间也是用逗号隔开
       学生数组,存储多个学生,使用【多个学生】
       每个学生:name,age,json字符串格式:{ name=“张三”,age=20}
       多个学生:[ { name=“张三”,age=20},{ name=“张三”,age=20},{ name=“张三”,age=20}]


案例一:
String json = "{name:'zhangsan',age:20}";


// 字符串以{开头,是json对象,使用JSONObject
// 第一次解析时,无论是对象还是数组,都需要指定解析的字符串
JSONObject o = new JSONObject(json);
// 根据不同类型的值,使用get***方法获得相应的值
String name = o.getString("name");
int age = o.getInt("age");


// 封装对象
Person p = new Person();
p.setAge(age);
p.setName(name);
System.out.println(p);
案例二:
 String json = "{name:'zhangsan',age:20,dept:{no:1,name:'android'}}";


try {
JSONObject o1 = new JSONObject(json);
String name = o1.getString("name");
int age = o1.getInt("age");


// 部门的值是对象,使用getJSONObject获得
JSONObject o2 = o1.getJSONObject("dept");
int no = o2.getInt("no");
String dName = o2.getString("name");
Dept dept = new Dept(no, dName);


Employee e = new Employee(name, age, dept);
System.out.println(e);
案例三:
String json = "[{name:'zhangsan',age:20},{name:'lisi',age:21},{name:'wangwu',age:22}]";
List<Person> list = new ArrayList<Person>();
          // json字符串以【开头,是数组,使用JSONArray解析
JSONArray a = new JSONArray(json);
for (int i = 0; i < a.length(); i++) {
JSONObject o = a.getJSONObject(i);
String name = o.getString("name");
int age = o.getInt("age");


Person p = new Person();
p.setAge(age);
p.setName(name);


list.add(p);
}
0 0
原创粉丝点击