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);