天天看点

JSON (JavaScript Object Notation)1. 初始JSON2. FastJson (精通)3. JS操作JSON对象(熟悉)

JSON

  • 1. 初始JSON
    • 1.1. JSON介绍(熟练)
    • 1.2. JSON格式
      • 1.2.1. 键值对集合
      • 1.2.2. 有序列表
  • 2. FastJson (精通)
    • 2.1. Java对象转JSON字符串/JSON对象
      • 2.1.1. Map
      • 2.1.2. List
      • 2.1.3. JavaBean
    • 2.2. JSON字符串/JSON对象转Java对象
      • 2.2.1. Map
      • 2.2.2. List
      • 2.2.3. JavaBean
      • 2.2.4. 复杂数据类型
  • 3. JS操作JSON对象(熟悉)

1. 初始JSON

1.1. JSON介绍(熟练)

  • JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)
  • JSON 是轻量级的文本数据交换格式
  • JSON 独立于语言:JSON 使用 Javascript语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。
  • JSON 具有自我描述性,更易理解

1.2. JSON格式

1.2.1. 键值对集合

“名称/值”对的集合(A collection of name/value pairs)。

JSON (JavaScript Object Notation)1. 初始JSON2. FastJson (精通)3. JS操作JSON对象(熟悉)

对象是一个无序的“‘名称/值’对”集合。一个对象以“{”开始,“}”结束。每个“名称”后跟一个“:”,“‘名称/值’ 对”之间使用“,”分隔。

示例:

var json = {“name”:”Jack”,”age”:90,”Marray”:true};
{"name":"Jack","Marray":true,"age":90}
           

1.2.2. 有序列表

值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。

JSON (JavaScript Object Notation)1. 初始JSON2. FastJson (精通)3. JS操作JSON对象(熟悉)

数组是值(value)的有序集合。一个数组以“[”开始,“]”结束。值之间使用“,”分隔。

示例:

2. FastJson (精通)

2.1. Java对象转JSON字符串/JSON对象

2.1.1. Map

private static void map2JSON(){
    Map<String,Object> map = new HashMap<>();
    map.put("id",1);
    map.put("name","张三");
    map.put("birthday",new Date());
    String jsonString = JSON.toJSONString(map);
    JSONObject jsonObject = (JSONObject) JSON.toJSON(map);
    System.out.println(jsonString);
    System.out.println(jsonObject);
}
           

{“birthday”:1548642714656,“name”:“张三”,“id”:1}

2.1.2. List

private static void list2JSON(){
    List<String> list = new ArrayList<>();
    list.add("a");
    list.add("b");
    list.add("c");
    String jsonString = JSON.toJSONString(list);
    JSONArray jSONArray = (JSONArray) JSONArray.toJSON(list);
    System.out.println(jsonString);
    System.out.println(jSONArray);
}
           

[“a”,“b”,“c”]

2.1.3. JavaBean

private static void bean2JSON(){
    Person p = new Person(1,"张三",new Date());
    String jsonString = JSON.toJSONString(p);
    JSONObject jsonObject = (JSONObject) JSON.toJSON(p);
    System.out.println(jsonString);
    System.out.println(jsonObject);
}
           

{“birthday”:1548643135123,“id”:1,“name”:“张三”}

2.2. JSON字符串/JSON对象转Java对象

2.2.1. Map

private static void JSON2Map(){
    JSONObject jsonObject = new JSONObject();
    jsonObject.put("a",1);
    jsonObject.put("b","bb");
    jsonObject.put("c",new Date());
    String jsonString = jsonObject.toJSONString();
    Map<String,Object> map1 = JSON.parseObject(jsonString, Map.class);
    System.out.println(map1);
}
           

{a=1, b=bb, c=1548645386767}

2.2.2. List

private static void JSON2Array(){
    JSONArray jsonArray = new JSONArray();
    jsonArray.add("a");
    jsonArray.add("b");
    jsonArray.add("c");
    jsonArray.add("d");
    String jsonString = jsonArray.toJSONString();
    List<String> list = JSONArray.parseArray(jsonString, String.class);
    System.out.println(list);
}
           

[a, b, c, d]

2.2.3. JavaBean

private static void JSON2Person(){
    JSONObject jsonObject = new JSONObject();
    jsonObject.put("id",1);
    jsonObject.put("name","张三");
    jsonObject.put("birthday",new Date());
    String jsonString = jsonObject.toJSONString();
    System.out.println(jsonString);
    Person person = JSONObject.parseObject(jsonString, Person.class);
    System.out.println(person);
}
           

{“birthday”:1548645582282,“name”:“张三”,“id”:1}

Person{id=1, name=‘张三’, birthday=Mon Jan 28 11:19:42 CST 2019}

2.2.4. 复杂数据类型

private static void JSON2ListInMap(){
    // 创建一个map对象,模拟前台请求返回的数据
    Map<String,Object> result = new HashMap<>();
    result.put("status","success");
    result.put("code","200");
    List<Person> list = new ArrayList<>();
    list.add(new Person(1,"张三",new Date()));
    list.add(new Person(2,"李四",new Date()));
    list.add(new Person(3,"王五",new Date()));
    list.add(new Person(4,"赵六",new Date()));
    result.put("data",list);

    // 将map对象转换成JSON字符串
    String jsonString = JSON.toJSONString(result);
    System.out.println(jsonString);

    // 对JSON字符串进行解析,获取Map对象

    // 直接转换的话,data内的集合为JSONArray,集合内存储的为JSONObject
    Map<String,Object> map = JSONObject.parseObject(jsonString, Map.class);
    System.out.println(map);

    // 先把JSON字符串转换成JsonObject
    JSONObject jsonObject = (JSONObject)JSONObject.parse(jsonString);
    // 获取JSONArray对象
    JSONArray jsonArray = (JSONArray) jsonObject.get("data");
    // 解析JSONArray对象获取Person集合
    List<Person> array = JSONArray.parseArray(jsonArray.toJSONString(), Person.class);
    // 重新赋值到map
    map.put("data",array);
    System.out.println(map);
}
           

{“code”:“200”,“data”:[{“birthday”:1548646719839,“id”:1,“name”:“张三”},{“birthday”:1548646719839,“id”:2,“name”:“李四”},{“birthday”:1548646719839,“id”:3,“name”:“王五”},{“birthday”:1548646719839,“id”:4,“name”:“赵六”}],“status”:“success”}

{code=200, data=[{“birthday”:1548646719839,“name”:“张三”,“id”:1},{“birthday”:1548646719839,“name”:“李四”,“id”:2},{“birthday”:1548646719839,“name”:“王五”,“id”:3},{“birthday”:1548646719839,“name”:“赵六”,“id”:4}], status=success}

{code=200, data=[Person{id=1, name=‘张三’, birthday=Mon Jan 28 11:38:39 CST 2019}, Person{id=2, name=‘李四’, birthday=Mon Jan 28 11:38:39 CST 2019}, Person{id=3, name=‘王五’, birthday=Mon Jan 28 11:38:39 CST 2019}, Person{id=4, name=‘赵六’, birthday=Mon Jan 28 11:38:39 CST 2019}], status=success}

3. JS操作JSON对象(熟悉)

<script type="text/javascript" >
    // 创建一个数组并赋值
    var list = new Array();
    list[0] = "a";
    list[1] = "b";
    list[2] = "c";

    // 创建一个JSON对象并赋值
    var obj = {
        "id"    :   1,
        "name"  :   "张三",
        "data"  :   list,
        "createDate"    : new Date()
    }

    // 控制台打印JSON对象
    console.log(obj);
    alert(obj.id);
    alert(obj.name);
    alert(obj.createDate);

    // 获取JSON对象中的数组
    var data = obj.data;
    alert(data);
    //遍历数组
    for(var i=0;i<data.length;i++){
        alert(data[i]);
    }
</script>