JSON使用

1.JSON的概述

JSON在线解析及格式化验证 - JSON.cn 

这是json在线解析  网站  好使!!

1.什么是JSON

 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式
    JSON采用完全独立于语言的文本格式,就是说不同的编程语言JSON数据是一致的。JS原生支持JSON.

2.为什么会有JSON

在JSON出现之前,大家一直用XML来传递数据。因为XML是一种纯文本格式,所以它适合在网络上交换数据。
    XML本身不算复杂,但是,加上DTD、XSD、XPath、XSLT等一大堆复杂的规范以后,
    任何正常的软件开发人员碰到XML都会感觉头大了,最后大家发现,即使你努力钻研几个月,
    也未必搞得清楚XML的规范。于是更简洁清晰的JSON格式应运而生。风靡全球。

3.JSON这种格式的特点

    1:纯文本形式并具备简洁和清晰的层次结构。
    2: JSON 具有“自我描述性”,易于人阅读和编写。
    3:具有层级结构,易于机器解析和生成,可以有效地提升网络传输效率。
    4:可以在js中直接解析。 

JSON使用_第1张图片

 2.前端中的JSON

前端js 自动可以解析  JSON  这里就不挨个写了!

JSON有几种存储格式?
    两种,一种是对象形式存储数据,一种是数组形式存储数据。

1.对象格式:

        对象格式: {  "k1":obj,"k2":obj  }
        举例: { "name":"jack", "age":18, "wife":null }

        语法:

            1.对象可以包含多个 key/value(键/值)对。
            2.key 必须是字符串,value可以是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 null)。
            3.key 和 value 中使用冒号(:)分割。
            4.每个 key/value 对使用逗号(,)分割。

2.JSON数组格式:

        数组格式:[obj,obj,obj...]
        举例: [ "tjtc", "it", "czzxxy" ]
        语法规则: 
           
 1.JSON 数组在中括号中书写。
            2.JSON 中数组value值必须是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 null)。。
            3.JSON数组可以使用jQuery语法完成遍历。

注意:

 学习前面两个基本格式,对应的值用value来表示,那么value可以是哪些具体的类型呢?
    string,number,object,array,true,false,null
举例:
    {"name":"红楼梦","alias":"石头记","author":[ "曹雪芹", "程伟元", "高鹗" ]}

 3.后端如何封装JSON数据的

注意:

   1.java本身没有json对象及数组格式。但是支持字符串,而JSON本质就是一串特殊的字符串。
    2.所以我们只需把JAVA 对象或集合转换成 JSON 格式的字符串,传递给前端,前端就可以解析了。
    3同样如果前端传递json字符串给Java,我们只需把JSON格式字符串转换成相应Java对象即可。

如何完成Java中的对象和JSON字符串的相互转换呢?
    我们可以采用JSON 的转换工具来完成。
        
JSON转换工具是什么,有何作用?
    json的转换工具是通过java封装好的一些jar工具包,完成java对象与json格式的字符串的相互转换。

目前企业中最为流行的是FastJson,我们选择FastJson来完成解析。

 1.把对象装换成JSON字符串


import com.alibaba.fastjson.JSON;
import com.itheima.pojo.User;
import org.junit.Test;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

/*
  !json个java对象的相互转换!

    java对象--json
    json--java对象
      要求咱们的java对象 必须有setget方法
    还需要导入jar包--json转换包
      导入依赖之后

      学习api
         java对象--json

             JSON.toJSONString(对象) 返回json文本

         json--java对象

        对象的类型   parseObject(json字符串,对象的类型)
         User                                User.class
         List<对象类型>  parseArray(json字符串,集合中对象的类型)
         List                            User.class

 */

public class Object2Json {

    // javabean--json
    @Test
    public void javaObject2Json(){
        User user = new User("张三",19,"男");
        //在java是一个对象
        // 如果前端需要这个对象 我们需要把它变成json格式
        //手动转换吗?借助工具包 完成 对象与json的转换
        // {"name":"张三","age",19,"sex":"男"}
        String jsonString = JSON.toJSONString(user);
        System.out.println(jsonString);
        // {"age":19,"name":"张三","sex":"男"}
    }


    // list--json
    @Test
    public void list2Json(){
        ArrayList list = new ArrayList<>();

        list.add(new User("张三",19,"男"));
        list.add(new User("李四",18,"女"));

        //把list--json
        String jsonString = JSON.toJSONString(list);
        System.out.println(jsonString);
        // [{"age":19,"name":"张三","sex":"男"},{"age":18,"name":"李四","sex":"女"}]
    }

    // map--json
    @Test
    public void map2Json(){
        Map map = new HashMap<>();

        map.put("王宝强","贾乃亮");
        map.put("马金莲","李小鹿");

        // map转换成json格式
        String jsonString = JSON.toJSONString(map);
        System.out.println(jsonString);
        // {"王宝强":"贾乃亮","马金莲":"李小鹿"}
    }

    @Test
    public void map3Json(){
        Map map = new HashMap<>();
       User user1 =  new User("张三",19,"男");
       User user2 =  new User("李四",18,"女");

       map.put("u001",user1);
       map.put("u002",user2);

        // map转换成json格式
        String jsonString = JSON.toJSONString(map);
        System.out.println(jsonString);
     // {"u002":{"age":18,"name":"李四","sex":"女"},"u001":{"age":19,"name":"张三","sex":"男"}}
    }
}

JSON.toJSONString(对象)  //返回 json 字符串

2.JSON字符串  转 对象

package com.itheima.test;

import com.alibaba.fastjson.JSON;
import com.itheima.pojo.User;
import org.junit.Test;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/*
  !json个java对象的相互转换!

    java对象--json
    json--java对象
      要求咱们的java对象 必须有setget方法
    还需要导入jar包--json转换包
      导入依赖之后

      学习api
         java对象--json

             JSON.toJSONString(对象) 返回json文本

         json--java对象

        对象的类型   parseObject(json字符串,对象的类型)
         User                                User.class
         List<对象类型>  parseArray(json字符串,集合中对象的类型)
         List                            User.class

 */

public class Json2Object {

    // json--javabean
    @Test
    public void javaObject2Json(){

        // {"age":19,"name":"张三","sex":"男"}
        String jsons = "{\"age\":19,\"name\":\"张三\",\"sex\":\"男\"}";
        //json变成 user类型对象
        //通过 解析方法 把一个json串解析成javabean对象
        User user = JSON.parseObject(jsons, User.class);
        System.out.println(user);

    }


    // json--list
    @Test
    public void list2Json(){

        //把json--list
       String json =  "[{\"age\":19,\"name\":\"张三\",\"sex\":\"男\"},{\"age\":18,\"name\":\"李四\",\"sex\":\"女\"}]";
        // [{"age":19,"name":"张三","sex":"男"},{"age":18,"name":"李四","sex":"女"}]

//        List list = JSON.parseObject(json, List.class);
//        //注意 没有泛型说明 里面的对象按照object对象接受的
//        for (Object o : list) {
//            System.out.println((User)o);
//        }

        List userList = JSON.parseArray(json, User.class);
        for (User user : userList) {
            System.out.println(user);
        }
    }

    // json--map
    @Test
    public void map2Json(){
       String json = "{\"王宝强\":\"贾乃亮\",\"马金莲\":\"李小鹿\"}";
        // {"王宝强":"贾乃亮","马金莲":"李小鹿"}
        Map map = JSON.parseObject(json, Map.class);
        System.out.println(map);
    }

    @Test
    public void map3Json(){
      String json = "{\"u002\":{\"age\":18,\"name\":\"李四\",\"sex\":\"女\"},\"u001\":{\"age\":19,\"name\":\"张三\",\"sex\":\"男\"}}";
     // {"u002":{"age":18,"name":"李四","sex":"女"},"u001":{"age":19,"name":"张三","sex":"男"}}

        Map map = JSON.parseObject(json, Map.class);
        Object u002 = map.get("u002");

        System.out.println(map);
    }
}

java对象---json格式数据怎么转换
     String JSON.toJSONString(对象)方法 完成转换。
      只不过我们对象 转换之后 是{} 单列集合数组转换之后[]  map集合转换之后{}
json对象---java对象 
     JSON.parseObject(json文本,你要转成对象类型)
     我们的基本javabean以及map集合适合这个转换,单列集合也可以使用
     如果是单列集合 想转换成对应的元素javabean
     需要使用
     JSON.parseArray(json文本,集合中类型)

你可能感兴趣的:(后端,json)