zoukankan      html  css  js  c++  java
  • JSON学习

    JSON学习

    概念

    JSON(JavaScript Object Notation,JavaScript对象表示法)

    将消息用对象封装起来

    var p={"name":"张三","age":23,"gender":"M"};

    JSON比XML更小、更快、更易解析

    语法

    1. 基本规则

      数据在名称/值对中:键用引号引起来,单引号和双引号都可以

      数据的类型:

      1. 数字(整数或浮点数)
      2. 字符串(双引号)
      3. 逻辑值(true/false)
      4. 数组
      5. 对象
      6. null

      数据由逗号分隔

      花括号保存对象

      方括号保存数组

      我们可以直接在JS中定义JSON对象:

          <script>
              var person={"name":"张三","age":23,"gender":"M"};
              alert(person);
          </script>
      
    2. 获取数据

      1. json对象.键名
      2. json对象["键名"]
      3. json数组对象[索引]

      第一种和第二种的区别就是第一种方法,键名不需要加引号,而第二种方法需要

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

    JSON一般被当做传输时数据的存储格式

    Java对象转换为Json

    JSON解析器是一个工具类,常用的有:JsonlibGson(谷歌)fastjson(阿里)jackson(springMVC框架中内置)

    这里我们使用jackson,使用步骤为:

    1. 导入jackson的相关jar包

    2. 创建jackson核心对象ObjectMapper

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

      示例:

      //1.创建Person对象
              Person p=new Person();
              p.setAge(23);
              p.setName("张三");
              p.setGender("M");
              //2.创建jackson核心对象ObjectMapper
              ObjectMapper mapper=new ObjectMapper();
              //3.转换
              /*
              转换方法:
              1. mapper.writeValue(参数1,obj);
                  参数1:
                      File:将Obj对象转换为JSON字符串,并保存到指定的文件中
                      Writer:将Obj对象转换为JSON字符串,并将JSON数据填充到字符输出流中
                      OutputStream:将Obj对象转换为JSON字符串,并将JSON数据填充到字节输出流中
              2. mapper.writeValueAsString(obj);//将对象转换为JSON字符串
      
              输出的字符串是{"name":"张三","age":23,"gender":"M"}
               */
      

    注解:添加在Java对象的属性上

    1. @JsonIgnore:用于排除属性,对应的属性就不会被转换到JSON中

    2. @JsonFormat;用于属性值的格式化,也就是对该属性的转换结果的形式进行要求。例如Date类型的数据,如果直接转换的话输出的是毫秒值,显然不是我们想要的,我们可以这样操作:

      @JsonFormat(pattern=“yyyy-MM-dd")
      

    复杂Java对象的转换:集合和数组

    List:直接把集合对象传进去,转换出来的就是集合形式的JSON

    Map:输出的也是键值对的对象格式的JSON

    JSON转为Java对象

    这种用的相比上面的那种比较少

    同样是使用Jackson,调用的方法是readValue(json字符串,Class类型),这里的Class类型也就是要转换为的Java对象的类型

    String json="{"gender":"M","name":"张三","age":23}";
    ObjectMapper mapper=new ObjectMapper();
    mapper.readValue(json,Person.class);
    

  • 相关阅读:
    23. 霍纳法则(多项式求值快速算法)
    22. 欧几里德算法(求最大公约数GCD)
    [poj 2106] Boolean Expressions 递归
    [poj 1185] 炮兵阵地 状压dp 位运算
    [MOOC程序设计与算法二] 递归二
    [poj 3254] Corn Fields 状压dp
    [hdu 1074] Doing Homework 状压dp
    [hdu 1568] Fibonacci数列前4位
    [haut] 1281: 邪能炸弹 dp
    [hdu 2604] Queuing 递推 矩阵快速幂
  • 原文地址:https://www.cnblogs.com/jiading/p/12048558.html
Copyright © 2011-2022 走看看