Javaweb之JSON学习

JSON

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。
JSON采用完全独立于语言的文本格式,而且很多语言都提供了对JSON的支持(包括C,C++,C#,Java,JavaScript,Perl,Python等)。
这样使得JSON成为理想的数据交换格式。

JSON是一种轻量级的数据交换格式。

轻量级指的是个XML做比较。

数据交换格式指的是客户端和服务器之间业务数据的传递格式。

JavaScript中使用JSON

JSON的定义:
JSON是由键值对组成,并且用花括号(大括号)包围,每个键由引号引起来,键和值之间使用冒号进行分隔。
多组键之间用逗号进行分隔。

var jsonObj = {
"key1"=12,
"key2"="abc",
"key3"= true,
"key4" = {
"key4_1" = 13,
"key4_2" = "sdf"
},
"key5" = ["arr",12,true];
"key6" = [
{"key4_1" = 13,"key4_2" = "sdf"},
{"key4_1" = 13,"key4_2" = "sdf"},"key4_2" = "sdf"}
]
}
JSON就是一个对象

JSON的访问
JSON本身是一个对象,JSON中的key就与访问对象中的属性一样


JSON的两个常用方法

JSON的存在用两种形式
一种为对象的形式,叫做JSON对象
一种为字符串形式,叫做JSON字符串

操作数据用JSON对象
传输用JSON字符串

JSON.stringify() 把JSON对象转化成JOSN字符串
JSON.parse() 把JSON字符串转化为JSON对象

var jsonObj = {
"key1"=12,
"key2"="abc",
"key3"= true,
"key4" = {
"key4_1" = 13,
"key4_2" = "sdf"
},
"key5" = ["arr",12,true];
"key6" = [
{"key4_1" = 13,"key4_2" = "sdf"},
{"key4_1" = 13,"key4_2" = "sdf"},"key4_2" = "sdf"}
]
}
转化成字符串
JSON.stringify(jsonObj);
转化为对象原理相同


Java中JSON的使用(这里使用谷歌提供的gson)

JavaBean和JSON的互转
toJson方法,把JavaBean对象转化为 JSON
一个参数,java对象

fromJson,把JSON转回Java对象
两个参数,第一个是JSON字符串,第二个参数是转换回去的类型

List和JSON的互转



Map和JOSN的互转

package com.test;

public class Person {
int ID;
String name;

public Person() {
}

public Person(int ID, String name) {
this.ID = ID;
this.name = name;
}

public String getName() {
return name;
}

public int getID() {
return ID;
}

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

public void setID(int ID) {
this.ID = ID;
}

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

package com.test;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

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

public class JSONTest {
// JavaBean和JSON的互转
public void test1(){
Person person1 = new Person(1,"你好");
Person person2 = new Person(2,"我好");
Person person3 = new Person(3,"大家好");

Gson gson = new Gson();
// toJson方法,把JavaBean对象转化为 JSON
String personJson = gson.toJson(person1);
System.out.println(personJson);
// fromJson,把JSON转回Java对象
// 两个参数,第一个是JSON字符串,第二个参数是转换回去的类型
gson.fromJson(personJson,Person.class);
}
// List和JSON的互转
public void test2(){
List<Person> personList = new ArrayList<>();
personList.add(new Person(1,"你好"));
personList.add(new Person(2,"我好"));
personList.add(new Person(3,"大家好"));

Gson gson = new Gson();
// toJson把list转化为JSON字符串;
// 一个参数,参数为list
String listToJson = gson.toJson(personList);
System.out.println(listToJson);

// JSON转化为list
//new TypeToken<ArrayList<Person>>(){} 匿名内部类
List<Person> list = gson.fromJson(listToJson,new TypeToken<ArrayList<Person>>(){}.getType());
System.out.println(list);
}


// Map和JSON的互转
public void test3(){
Map<Integer,Person> personMap = new HashMap<>();
personMap.put(1,new Person(1,"你好"));
personMap.put(2,new Person(2,"我好"));
personMap.put(3,new Person(3,"大家好"));

Gson gson = new Gson();
String toJson = gson.toJson(personMap);
System.out.println(toJson);
}
public static void main(String[] args) {
JSONTest jsonTest = new JSONTest();
jsonTest.test2();
}
}

package com.test;

import com.google.gson.reflect.TypeToken;

import java.util.ArrayList;

public class PersonList extends TypeToken<ArrayList<Person>> {
}

posted on 2020-10-15 22:36  youlingdada  阅读(158)  评论(0编辑  收藏  举报