JSON

1  概念:JavaScript Object Notation     JavaScript对象表示法

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

  json现在多用于存储和交换文本信息的语法

  进行数据的传输

  json比xml更小、更快、更易解析

2  语法:

  1  基本规则

    数据在名称/值对中:json数据是由键值对构成的

      * 键用引号引起来,也可以不使用

      * 值的取值类型

        数字(正数或浮点数)

        字符串(在双引号中)

        逻辑值(true 或 false)

        数组(在方括号中)

        对象(在花括号中)

        null

    数据由逗号分隔:多个键值对由逗号分隔

    花括号保存对象:使用{}定义json格式

    方括号保存数组:[]

  2  获取数据:

    1  json对象.键名

    2  json对象["键名"]

    3  数组对象[索引]

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script>
    //1  定义基本格式
    var person = {
        "name" : "zhangsan",
        "age" : "23",
        "gender" : "true"
    };
    var name=person.name;
    var name=person["name"];
    //alert(name);
    //alert(person);
    //2  嵌套格式    {}--->[]
    var people = {
        "people" : [ {
            "name" : "zhangsan",
            "age" : "23",
            "gender" : "true"
        }, {
            "name" : "lisi",
            "age" : "24",
            "gender" : "true"
        }, {
            "name" : "wangwu",
            "age" : "25",
            "gender" : "true"
        } ]
    };
    var name=people.people[2].name;
    //alert(name);
    //alert(people);
    //2  嵌套格式    []--->{}
    var peo=[{
        "name" : "zhangsan",
        "age" : "23",
        "gender" : "true"
    }, {
        "name" : "lisi",
        "age" : "24",
        "gender" : "true"
    }, {
        "name" : "wangwu",
        "age" : "25",
        "gender" : "true"
    } ];
    var name=peo[1].name;
    alert(name);
    //alert(peo);
</script>
</head>
<body>

</body>
</html>

   3  JSON和Java对象的相互转换

    *  JSON解析器

      常见的解析器:Jsonlib,Gson,fastjson,jackson

    1  JSON转为Java对象

      1  使用步骤

        1  导入jackson的相关jar包

        2  创建Jackson核心对象 ObjectMapper

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

          readValue(json字符串数据,Class)

    2  Java对象转换JSON

      1  使用步骤

        1  导入jackson的相关jar包

        2  创建Jackson核心对象 ObjectMapper

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

      2  注解:
        1  @JsonIgnore:排除属性

        2  @JsonFormat:属性值的格式化

      3  复杂Java对象转换

        1  List:数组

        2  Map:对象格式一致

package test;

import java.util.ArrayList;
import java.util.List;

import org.junit.Test;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

import domain.person;

public class Jackson {
    //java对象转换为json字符串
    @Test
    public void test1() throws JsonProcessingException {
        //创建person对象
        person p=new person();
        p.setName("zhangsan");
        p.setAge(23);
        p.setGender("男");
        
        //创建Jackson的核心对象ObjectMapper
        ObjectMapper mapper=new ObjectMapper();
        //转换
        /*
         转换方法:
              writevalue(参数1,obj)
                  参数1:
                      File:将obj对象转换为json字符串,并保存到指定的文件中
                      Writer:将obj对象转换为json字符串,并将json数据填充到字符输出流中
                      OutputStream:将obj对象转换为json字符串,并将json数据填充到字节输出流中
              writeValueAsString(obj):将对象转换为json字符串
         */
        String s=mapper.writeValueAsString(p);
        //System.out.println(s);
    }
    
    @Test
    public void test2() throws JsonProcessingException {
        //创建person对象
        person p=new person();
        p.setName("zhangsan");
        p.setAge(23);
        p.setGender("男");
        
        person p1=new person();
        p1.setName("lisi");
        p1.setAge(24);
        p1.setGender("男");
        
        person p2=new person();
        p2.setName("wangwu");
        p2.setAge(25);
        p2.setGender("男");
        
        List<person> peo=new ArrayList<person>();
        peo.add(p);
        peo.add(p1);
        peo.add(p2);
        
        //创建Jackson的核心对象ObjectMapper
        ObjectMapper mapper=new ObjectMapper();
        //转换
        
        String s=mapper.writeValueAsString(peo);
        System.out.println(s);
    }
}

 

上一篇:Mybatis框架


下一篇:孙卫琴的《精通JPA与Hibernate》的读书笔记:用@OneToOne注解映射一对一关联