JSON

来源:互联网 发布:wind数据 编辑:程序博客网 时间:2024/06/02 05:48

1) JSON(JavaScript Object Notation)

   一种简单的数据格式,比xml更轻巧。JSON是JavaScript原生格式,在JavaScript中处理JSON数据不需要任何特殊的API或工具包。

2)JSON数据结构

1.对象

    对象表示为“{}”扩起来的内容,结构为 {key:value,key:value,...}格式的键值对。是一个无序的 名称/值对集合。以

{开始,以}结束,每个名称后跟一个:,:后面是对应的值,名称/值 对之间使用,分隔。 key值必须要是string类型,值的类型可以

是:string, number, object, array, true, false, null。

例:{'name':'zhang','age':26};{'users':{'name':'zhang','age':25}};{'name':'China','city':['北京',‘上海’]}。

2.数组(jsonArray)

    数组表示为中括号“[]”扩起来的内容,是有序的value的集合。数据结构为 [value,value,value,...]的单值的结构。一个数

组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。

例: ["zhangsan","lisi"];[{'name':'zhangsan','age':21},{'name':'lisi','age':20}]。

3)JSON与XML比较:

    JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加

快速度。

4)JSON解析

1.原生JSON解析

/* * JSON对象格式解析 * 1.将JSON对象格式字符串通过JSONObject.fromObject()转化为JSONObject对象 * 2.通过 JSONObject.toBean(JSONObject对象,Class)转化为javabean * */public class TestJSONObject {public static void main(String[] args) {// JSON对象格式字符串String str = "{'id':110,'name':'zhangsan','sex':'male','age':18}";JSONObject jsonObj = JSONObject.fromObject(str);Student stu = (Student) JSONObject.toBean(jsonObj, Student.class);System.out.println(stu);}}

/* * JSON数组格式解析 * 1.将JSON数组格式转换为JSONArray对象 * 2.通过JSONArray.toCollection(JSONArray对象, Class)将JSON数组格式转换成对象 * */public class TestJSONArray {public static void main(String[] args) {//JSON数组格式String str = "[{'id':110,'name':'zhangsan','sex':'male','age':18},{'id':120,'name':'lisi','sex':'female','age':28}]";JSONArray jsonArray = JSONArray.fromObject(str);JSONObject jsonObj = jsonArray.getJSONObject(1);int id = jsonObj.getInt("id");System.out.println(id);Collection c = JSONArray.toCollection(jsonArray, Student.class);System.out.println(c);}}

//混合格式json解析public class TestJSON2 {public static void main(String[] args) {String str = "{'name':'中国','provinces':[{'pName':'河南'},{'pName':'山西'}]}";JSONObject jsonObject = JSONObject.fromObject(str);Map<String,Class> map = new HashMap<String,Class>();map.put("provinces", Province.class);Country c = (Country) JSONObject.toBean(jsonObject, Country.class, map);System.out.println(c);}}
public class TestJSON {public static void main(String[] args) {String str = "{'us':[{'name':'zhangsan','age':20},{'name':'zhangsan','age':20}]}";JSONObject jsonObject2 = JSONObject.fromObject(str);JSONArray jsonArray2 = jsonObject2.getJSONArray("us");Collection c = JSONArray.toCollection(jsonArray2, User.class);System.out.println(c);System.out.println("---------------自己组装JSON转化为JavaBean----------------");JSONObject jsonObj = JSONObject.fromObject(str);JSONArray jsonArray = jsonObj.getJSONArray("us");ArrayList<User> ulist = new ArrayList<User>();User user = new User();//循环获取JSON数组中的JSON对象for(int i=0;i<jsonArray.size();i++){JSONObject jsonObject = jsonArray.getJSONObject(i);//将获取到的数据封装进user中user.setName(jsonObject.getString("name"));user.setAge(jsonObject.getInt("age"));ulist.add(user);}Users users = new Users();users.setUs(ulist);System.out.println(users);}
}

//对象转换为JSONpublic class TestToJSON {    public static void main(String[] args) {        User user = new User("张三", 20);        String str = JSONObject.fromObject(user).toString();        System.out.println(str);                    System.out.println("--------------------------");                ArrayList<User> list = new ArrayList<User>();        list.add(user);        String str2 = JSONArray.fromObject(list).toString();        System.out.println(str2);    }}
2.Gson解析

/* * GSON解析JSON *  * */public class TestGson {public static void main(String[] args) {System.out.println("-----------------GSON解析JSON对象字符串-----------------------");String str = "{'id':110,'name':'zhangsan','sex':'male','age':18}";Gson gson = new Gson();Student student = gson.fromJson(str, Student.class);System.out.println(student);System.out.println("----------------GSON解析JSON数组字符串------------------------");String str2 = "[{'id':110,'name':'zhangsan','sex':'male','age':18},{'id':120,'name':'lisi','sex':'female','age':28}]";//Gson gson = new Gson();Type type = new TypeToken<List<Student>>(){}.getType();List<Student> list = gson.fromJson(str2, type);System.out.println(list);System.out.println("-----------------GSON解析JSON混合字符串-----------------------");String str3 = "{'us':[{'name':'zhangsan','age':20},{'name':'zhangsan','age':20}]}";//Gson gson = new Gson();User user = gson.fromJson(str, User.class);System.out.println(user);}}

/* * 对象通过Gson转换为JSON * */public class TestGsonToJson {public static void main(String[] args) {ArrayList<Users> list = new ArrayList<Users>();for(int i=0;i<2;i++){Users users = new Users();ArrayList<User> ulist = new ArrayList<User>();for(int j=0;j<2;j++){User user = new User("zs"+j, 20+j);ulist.add(user);}users.setUs(ulist);list.add(users);}Gson gson = new Gson();      String str = gson.toJson(list);System.out.println(str);}}

3.FastJson

(1)普通object格式转换为对象

      String str ="{'id':110,'name':'zhangsan','sex':'male','age':18,}";

      Student s = JSON.parseObject(str, Student.class);

(2)数组格式转换为集合:

      String str = "[{'name':'zhangsan','age':20},{'name':'zhangsan','age':20}]";

      List<Student> s = JSON.parseArray(str, Student.class);

(3)对象转换为json字符串:

      普通字符串: JSON.toJSONString(s)

      格式字符串:JSON.toJSONString(s,true)

原创粉丝点击