Json

JSON:

概念:

JavaScript Object Notation: JavaScript对象表示法

  1. JSON现在多用于存储和交换文本的语法,类似与xml

  2. JSON比xml更小,更快,更易解析

语法:

  1. 基本规则:

    • 数据在名称/值对中:json数据是由键值对构成的
      • 键用单双引号或者不用引号
      • 值的数据类型:
        • 字符串(在双引号中)
        • 数字(整数或者浮点数)
        • 逻辑值(true或者false)
        • 数组(在方括号中)
        • 对象(在花括号中)
        • null (空)
    • 数据由逗号分隔:多个键值对由逗号分隔
    • 花括号保存对象:使用{}定义json格式
    • 方括号保存数组:[]
  2. 表现形式

    1. 基本格式

      1
      var person = {"name":"张三",age:23,'gender':true};
    2. 嵌套格式

      • {}->[]
      1
      var persons = {"persons":[{"name":"张三",age:20},{"name":"李四",age:21},{"name":"王五",age:22}]};
      • []->{}
      1
      var ps = [{"name":"张三",age:20},{"name":"李四",age:21},{"name":"王五",age:22}];
  3. 值的获取

    1
    2
    3
    4
    5
    6
    var name = person.name;
    var name = person["name"];

    var name = persons.persons[2].name;

    var name = ps[1].name;

    遍历

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    //获取persons json对象中所有的对象和值
    for(var key in person) {
    alert(key + ":" + person[key]);
    }
    //获取ps json对象中所有的对象和值
    for(var i= 0; i < ps.length(); i++){
    var p = ps[i];
    for(var key in p){
    alert(key + ":" + p[key])
    }
    }
    1. json对象.键名
    2. json对象[“键名”]
    3. 数组对象[索引]

JSON数据和Java对象的相互转换

常见的json解析器:

  • Jsonlib,Gson,FastJson,Jackson
  1. JSON转为Java对象

    1. 使用步骤

      1. 导入jackson相关的jar包

      2. 创建jackson核心对象objectMapper

      3. 调用ObjectMapper的相关方法进行转换

        1
        readValue(json字符串数据,class对象);//将json字符串数据转化为参数class对应类的对象
  1. Java对象转为JSON

    1. 使用步骤:

      1. 导入jackson的相关jar包
      2. 创建Jackson的核心对象,ObjectMapper
      3. 调用ObjectMapper的相关方法进行转换
      1
      2
      3
      ObjectMapper mapper = new ObjectMapper();
      mapper.writeValue(参数1,obj); //参数1可以是File:将obj转化为json字符串,并保存到指定的文件中;参数1可以是Wirter:将obj转化为json字符串,并将json的数据填充到字符输出流中;参数1可以是OutputStream:将obj转化为json字符串,并将json数据填充到字节输出流中
      mapper.writeValueAsString(obj); //将obj对象转化为json字符串
    2. 注解:

      1. @JsonIgnore:排除属性,对应属性的键值对将不会进行转化
      2. @JSonFormat:属性值的格式化,将对应属性的值转化为不同的格式
    3. 复杂java对象转换为json:

      1. list

        1
        mapper.writeValueAsString(list)
2. map

   
1
mapper.writeValueAsString(map)
Thanks!