欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

javaweb学习笔记 JSON篇

程序员文章站 2024-02-04 19:03:58
...

1.什么是JSON

JSON(Javascript Object Notation)是一种轻量级的数据交换格式,易于人的阅读和编写,同时易于机器的解析和生成,JSON采用完全独立于语言的文本格式,而且很多语言都提供了对json的支持,这样使得jspn成为了理想的数据交换语言
json是一种轻量级的数据交换格式
轻量级指的是跟xml作比较,
数据交换指的是客户端和服务器之间业务交换数据的传输格式,

1.1JSON在JavaScript中的使用

1.1.1 JSON的定义

JSON是由键值对组成,并且由花括号(大括号)包围,每个键由引号引起来,键和值之间可以用冒号分割,每组键值对使用逗号进行分割

var jsonobj={
				"key1":12,
				"key2":"abc",
				"key3": true,
				"key4":[11,"abc",false]
				"key5":{
					"key5_1":551,
					"key5_2": "key5_2value"
				},
				"key6":[{
					"key 6_1_1":6611,
					"key_6_1_2":"key6_1_2value"
				}, {
					"key 6_2_1":6621,
					"key_6_2_2":"key6_2_2value"
					}]
			}

1.1.2 json的访问

json本身是一个对象
json中的key我们可以理解为是对象中的一个属性
json中的key访问就跟访问对象的属性一样 json对象.key

// json的访问
			alert(jsonobj.key1);//12
			alert(jsonobj.key2);//abc
			alert(jsonobj.key3);//true
			alert(jsonobj.key4);//得到数组 [11,"abc",false],
			for (var i = 0; i < jsonobj.key4.length; i++) {
				alert(jsonobj.key4[i]);
			}//数组的遍历
			alert(jsonobj.key5.key5_1); //访问json是json对象的value
			alert(jsonobj.key5.key5_2);
			for (var i = 0; i < jsonobj.key6.length; i++) {
				//取出来每一个元素都是json对象
				var jsonItem = jsonobj.key6[0];

			  alert (jsonItem.key_6_1_2);
			  alert(jsonItem.key6_1_1);

			}

1.1.3json的两种常用方法

json的存在有两种形式,
一种是对象的形式存在,我们称之为json对象
一种是字符串的形式存在,我们叫他json字符串
一般我们要操作json中的数据的时候,需要json对象的格式
一般我们要在客户端和服务器之间进行数据交换的时候,使用json字符串
JSON.stringify() 把json对象转换成为json字符串
JSON.parse() 把json字符串转换为json对象

alert(jsonobj);
		//把json对象转换成为json字符串
		var jsonObjString = JSON.stringify(jsonobj); //特别想java中object的toString
		alert(jsonObjString);
		//把json字符串转换为json对象
		var JSONObj2 = JSON.parse(jsonObjString);
		alert(JSONObj2.key1);

1.2JSON在java中的使用

1.2.1 javabean和json的互转

public class JSONtest {
    //1.javabean和json的互转
    @Test
    public void test1(){
        Person person = new Person(1,"zhaochen");
        //创建gson对象实例
        Gson gson = new Gson();
        // toJson方法可以把java对象转换为json字符串
        String jsonString = gson.toJson(person);
        System.out.println(jsonString);//{"ID":1,"name":"zhaochen"}
        //fromjson把json字符串转换为java对象
        // 第一个参数是json字符串
        // 第二个参数是转换回去的java对象类型
        Person person1 = gson.fromJson(jsonString, Person.class); //Person{ID=1, name='zhaochen'}
        System.out.println(person1);
    }

1.2.2 list和json的互换

需要一个工具类来确定list的类型
personListType.java

package com.atguigu.json;

import com.atguigu.pojo.Person;
import com.google.gson.reflect.TypeToken;

import java.util.ArrayList;

public class personListType extends TypeToken<ArrayList<Person>> {

}
  // 2.List 和 json的互换
    @Test
    public void test2(){
        ArrayList<Person> personList = new ArrayList<>();
        personList.add(new Person(1,"zhaochen1"));
        personList.add(new Person(2,"zhaochen2"));

        Gson gson = new Gson();
        //把list集合转换为json字符串
        String jsonString = gson.toJson(personList);
        System.out.println(jsonString);

        List<Person> list=gson.fromJson(jsonString,new personListType().getType());
        System.out.println(list);
        Person person = list.get(0);
        System.out.println(person);
    }

1.2.3 map和json的互换

    @Test
    public void test(){
        HashMap<Integer, Person> personHashMap = new HashMap<>();
        personHashMap.put(1,new Person(1,"zhaochen1"));
        personHashMap.put(2,new Person(2,"zhaochen2"));
        Gson gson = new Gson();
        //把map集合转换称为Json字符串
        String toJson = gson.toJson(personHashMap);
        System.out.println(toJson);
        HashMap<Integer,Person> fromJson = gson.fromJson(toJson, new TypeToken<HashMap<Integer,Person>>(){}.getType());
        System.out.println(fromJson);
        Person person = fromJson.get(1);
        System.out.println(person);
    }
}