fastjson解析json数据

fastjson为阿里巴巴推出来的   对于解析的字段首字母是大写的,容易出问题

import java.util.ArrayList; 
import java.util.List;
import com.alibaba.fastjson.JSON;

public class Json_FastJson {

    public static void main(String[] args) {
        String json = "{name:'张三',age:18}";
        Student student = JSON.parseObject(json, Student.class);
        System.out.println(student);
        
        String json2 = "[{name:'张三',age:18},{name:'李四',age:29}]";
        List<Student> parseArray = JSON.parseArray(json2, Student.class);
        System.out.println(parseArray);
        
        String json3 = "{name:'android1605',no:1605,students:[{name:'杨杰',age:18},{name:'刘杰',age:20}]}";
        Classes parseObject = JSON.parseObject(json3,Classes.class);
        System.out.println(parseObject);
    }

}
class Classes{
    private String name;
    private int no;
    private ArrayList<Student> students;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getNo() {
        return no;
    }
    public void setNo(int no) {
        this.no = no;
    }
    public ArrayList<Student> getStudents() {
        return students;
    }
    public void setStudents(ArrayList<Student> students) {
        this.students = students;
    }
    @Override
    public String toString() {
        return "Classes [name=" + name + ", no=" + no + ", students="
                + students + "]";
    }
    
}
class Student{
    private String name;
    private int age;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "Student [name=" + name + ", age=" + age + "]";
    }
    
}

 

 

 

import java.util.List;

import com.alibaba.fastjson.JSON;
//fastjson解析json数据 封装类必须具有get set方法   类的成员变量也必须与json数据的键一样
class Emp {//员工

    private String name;
    private int salary;

    @Override
    public String toString() {
        return "Emp [name=" + name + ", salary=" + salary + "]";
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getSalary() {
        return salary;
    }

    public void setSalary(int salary) {
        this.salary = salary;
    }

}

class Dept {//部门
    private int no;
    private String name;
    private List<Emp> list;

    @Override
    public String toString() {
        return "Dept [list=" + list + ", name=" + name + ", no=" + no + "]";
    }

    public int getNo() {
        return no;
    }

    public void setNo(int no) {
        this.no = no;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public List<Emp> getList() {
        return list;
    }

    public void setList(List<Emp> list) {
        this.list = list;
    }

}

public class TestFastJSON {
    public static void main(String[] args) {
        String json = "[{no:1001,name:'研发部',list:[{name:'李晨',salary:30000},{name:'王思远',salary:3}]},{no:2,name:'市场部',list:[{name:'周周',salary:19000}]}]";
        List<Dept> list = JSON.parseArray(json, Dept.class);
        System.out.println(list);
    }

}

fastjson的强大之处,可以将json数据转化成map数据:

Map<String,Object> map = JSON.parseObject(jsonStr, Map.class); //fastjson json转换map

//可以将json的值,通过键 转换成String
for(String key : map.keySet()){
    String value = String.valueOf(map.get(key));//所有值都强制转换为字符串    value 就是 json数据这个key对应的字符串数据
    LogUtil.e("value:" + value);
}

 为了避免数据排序跟后台给的排序不一致,需要使用LinkedHashMap

JSON.parseObject(jsonObject.toString(), LinkedHashMap.class);

 

posted @ 2016-05-29 19:41  ts-android  阅读(392)  评论(0编辑  收藏  举报