JSON的相关操作和与java对象的转化

JSON概述:

  JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)

 使用{}进行包含对象,可以使用[]包含{}对象的形式,对象里面也可以含有[]。

JSON实例:

{ "firstName":"John" , "lastName":"Doe" }

[
{ "firstName":"John" , "lastName":"Doe" },
{ "firstName":"Anna" , "lastName":"Smith" },
{ "firstName":"Peter" , "lastName":"Jones" }
]

 

JSON的获取:

对于{}花括号里面的获得由两种方式:

  1. 直接花括号的对象引用.键名(注意:键名不加双引号
  2. 使用花括号对象的引用["键名"] (注意:键名加双引号

 

对于中括号对象的获得方式是通过数组索引的方式获得

代码实现:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>JESON的基本操作</title>
</head>
<script>

    let person = {"name": "zhangsan", "age": 23, "gender": true};
    for (let key in person) {
        alert(key + "  " + person[key]);//在这里获得的key是自带双引号的,所以只能使用数组的方式获得
    }

    /*
    * 对于{}花括号里面的获得由两种方式:
    * 1.直接花括号的对象引用.键名
    * */
    alert(person.name);
    /*
    * 2.使用花括号对象的引用["键名"]
    *
    * */
    alert(person["age"]);


    /*
    * 对于中括号对象的获得方式是通过数组索引的方式获得
    * */

    let address = [{"河南": "郑州"},
        {"湖北": "武汉"}]
    alert(address[0].河南);


</script>
<body>


</body>
</html>

 

 

值得注意的是使用for in 遍历混的key的时候获得的key是自带“”双引号的。

 

java对象转JSON

我们可以利用工具将java对象转化成为JSON字符串,也可以将JSON字符串转化成为java对象,工具有很多我们使用jackson工具导入相关的jar包即可。

 

操作步骤:

  1. 导入jackson的相关jar包
  2. 创建jackson核心对象ObjectMapper
  3. 调用ObjectMapper对象的相关方法进行转换

 

java对象转换成jeson的三种方法

  1. 直接转化成jeson
  2. 转化成jeson之后写到指定文件中
  3. 转化成jeson然后以流的方式写入到文件或者其他的流中比如响应流中

代码实现:

 ObjectMapper mapper = new ObjectMapper();
        try {
            //1.直接转化成jeson
            String jeson = mapper.writeValueAsString(person);
            System.out.println(jeson);
            //2.转化成jeson之后写到指定文件中
            mapper.writeValue(new File("E://a.txt"),person);
            //3.转化成jeson然后以流的方式写入到文件或者其他的流中比如响应流中
            mapper.writeValue(new FileWriter("E://b.txt"),person);


        } catch (Exception e) {
            e.printStackTrace();
        }

 

 

两个关于JSON的注解

  1. @JsonIgnore :排除属性
  2. @JsonFormat(pattern="yyyy-MM-dd") :属性值格式化(对日期的格式化)

代码演示:

package com.itheima.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;

import java.util.Date;

public class Person {
    private String name;
    private int age;
    private String gender;
    //    @JsonIgnore   注解的作用是当转化json的时候忽略这个属性不进行转化这个属性
    @JsonFormat(pattern = "yyyy-MM-dd")//注解的作用第当进行转换json是对这个属性进行相应的格式转化
    private Date birthday;

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", gender='" + gender + '\'' +
                '}';
    }
}

 

 

复杂java对象的转换:

  • List对象  :转换后的JSON形式是数组的形式
  • Map对象  :转换后的JSON形式是简单花括号对象的形式(一般使用Map制造需要的JSON

代码实现:

/转化List集合成为数组
         /*   String l = mapper.writeValueAsString(list);
            System.out.println(l);*/


            /*
             * Map转化成为普通花括号对象
             * */
            /*Map<String,String> map=new HashMap<>();
            map.put("name","张三");
            map.put("age","23");
            map.put("gender","男");
            String m = mapper.writeValueAsString(map);
            System.out.println(m);*/

 

 

 关于AJAX响应格式的设置:

服务器的响应的数据,在客户端使用时,要想当做JSON数据格式使用则必须进行相关的设置,方法有两种:

  1. $.get();或者$.post();方法的最后一个参数type指定为“json” 
  2. 在服务器端设置MIME类型:response.setContentType("application/json;charset=utf-8");

 

posted @ 2020-10-07 17:05  Joker-0927  阅读(195)  评论(0编辑  收藏  举报
// 侧边栏目录