> 文档中心 > 数据交换 JSON

数据交换 JSON

JSON

    • 数据交换 JSON
      • 概述
      • JSON 对象字符串对象转换
      • JSON 在 java 中使用
        • Javabean 对象和 json 字符串 的转换
        • List 对象和 json 字符串 的转换
        • map 对象和 json 字符串 的转换

大家好呀,我是小笙,以下是我学习数据交换-JSON的学习笔记

数据交换 JSON

概述

json在线文档

JSON 指的是 JavaScript 对象表示法,也是轻量级的文本数据交换格式

JSON的定义格式

var 变量名 = {     "k1" : value, // Number 类型     "k2" : "value", // 字符串类型    "k3" : [], // 数组类型     "k4" : {}, // json 对象类型     "k5" : [{},{}] // json 数组 };

代码示例

数据交换 JSON

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>json 快速入门案例</title><script type="text/javascript">var myJson = {"key1": "罗念笙", // 字符串 "key2": 123, // Number "key3": [1, "hello", 2.3], // 数组 "key4": {"age": 12, "name": "jack"}, //json 对象 "key5": [ //json 数组 {"k1": 10, "k2": "tom"}, {"k3": 30, "k4": "smith"} ] ,};// 访问 json 的属性 console.log("key1= " + myJson.key1); // 罗念笙console.log("key1= " + myJson.key2);  // 123// 访问 json 的数组属性 console.log("key3[1]= " + myJson.key3[1]);  //  hello// 访问 key4 的 name 属性 console.log("name= " , myJson.key4);  // name=  {age: 12, name: 'jack'}console.log("name= " + myJson.key4);  // name= [object Object]console.log("name= " + myJson.key4.name); // jack// 访问 key5 json 数组的第一个元素 console.log("myJson.key5[0]= " + myJson.key5[0]); //[object, object] console.log("myJson.key5[0].k2= " + myJson.key5[0].k2) // tom</script></head><body><h1>json 快速入门案例</h1></body></html>

JSON 对象和字符串对象转换

  • JSON.stringify(json)功能: 将一个 json 对象转换成为 json 字符串
  • JSON.parse( jsonString )功能: 将一个 json 字符串转换成为 json 对象

代码示例

数据交换 JSON

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>JSON 对象和字符串对象转换</title><script type="text/javascript">//JSON 是一个 build-in 对象,内置对象console.log(JSON) // json 对象 var jsonObj = {"name": "罗念笙","age": 18}; console.log("json 对象 " , jsonObj);// 把 json 对象转换成为字符串对象 var jsonStr = JSON.stringify(jsonObj); console.log("字符串: " + jsonStr); // 把 json 对象的字符串,转换成为 json 对象 var jsonObj2 = JSON.parse(jsonStr); console.log("json 对象 " , jsonObj2); </script></head><body><h1>JSON 对象和字符串对象转换</h1></body></html>

注意细节

  • 在定义 Json 对象时, key值可以使用 ’ ’ 或者 " "表示字符串,甚至可以不用加引号

    • var json_person = {“name”: “jack”, “age”: 100};
    • var json_person = {‘name’: ’jack‘, ‘age’: 100};
    • var json_person = {name: “jack”, age: 100};
  • 但是把原生字符串转成 json 对象时, 必须使用 “”, 否则会报错

    var str = "{\"name\": \"罗念笙\",\"age\": 18}"console.log("json 对象 " , JSON.parse(str)); 
  • JSON.springify(json 对象) 返回的字符串, 都是 “” 表示的字符串, 是可以重新转成 json 对象

JSON 在 java 中使用

  • java 中使用 json,需要引入的包 gson.jar
  • Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库
  • JSON 字符串 和 Java 对象之间相互转换

数据交换 JSON

Javabean 对象和 json 字符串 的转换

JavaBean

public class Book {    private Integer id;    private String name;    public Book() {    }    public Book(Integer id, String name) { this.id = id; this.name = name;    }    public Integer getId() { return id;    }    public void setId(Integer id) { this.id = id;    }    public String getName() { return name;    }    public void setName(String name) { this.name = name;    }    @Override    public String toString() { return "Book{" +  "id=" + id +  ", name='" + name + '\'' +  '}';    }}
public class JavaJson {    public static void main(String[] args) { // Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库 Gson gson = new Gson(); // 创建javabean对象 Book book = new Book(1, "红楼梦"); // Javabean 对象 => json 字符串 String s = gson.toJson(book); System.out.println(s); // {"id":1,"name":"红楼梦"} // json 字符串 =>  Javabean 对象 String str = "{\"id\": 2 , \"name\" : \"水浒传\" }"; Book book2 = gson.fromJson(str, Book.class); System.out.println(book2); // Book{id=2, name='水浒传'}    }}

List 对象和 json 字符串 的转换

public class LIstJson {    public static void main(String[] args) { Gson gson = new Gson(); // List 对象和 json 字符串 的转换 List<Book> list = new ArrayList<>(); // 添加4本书 list.add(new Book(1,"红楼梦")); list.add(new Book(2,"三国演义")); list.add(new Book(3,"水浒传")); list.add(new Book(4,"西游记")); // List 对象 => json 字符串 String s = gson.toJson(list); System.out.println(s); // json 字符串 => List 对象 String listBook = "[{\"id\":1,\"name\":\"红楼梦\"},{\"id\":2,\"name\":\"三国演义\"}," +     "{\"id\":3,\"name\":\"水浒传\"},{\"id\":4,\"name\":\"西游记\"}]"; // TypeToken 是一个自定义泛型类,在创建时,需要指定具体类型,这里我们指定为 List // type:java.util.List // 创建TypeToken<List>(){}匿名内部类,默认调用无参构造器中的super构造器,才可以访问受保护的TypeToken构造器 Type type = new TypeToken<List<Book>>(){}.getType(); List<Book> listJson = gson.fromJson(listBook, type); System.out.println(listJson);    }}

map 对象和 json 字符串 的转换

public class MapJson {    public static void main(String[] args) { Gson gson = new Gson(); // Map 对象和 json 字符串 的转换 Map<Integer,Book> map = new HashMap(); // 添加4本书 map.put(1,new Book(1,"红楼梦")); map.put(2,new Book(2,"三国演义")); map.put(3,new Book(3,"水浒传")); map.put(4,new Book(4,"西游记")); //  Map 对象 => json 字符串 String s = gson.toJson(map); System.out.println(s); // json 字符串 => Map 对象 String mapBook = "{\"1\":{\"id\":1,\"name\":\"红楼梦\"},\"2\":{\"id\":" +     "2,\"name\":\"三国演义\"},\"3\":{\"id\":3,\"name\":\"水浒传\"},\"4\":{\"id\":4,\"name\":\"西游记\"}}"; Type type = new TypeToken<Map<Integer, Book>>() {}.getType(); Map<Integer,Book> bookMap = gson.fromJson(mapBook, type); System.out.println(bookMap);    }}

开发者涨薪指南 数据交换 JSON 48位大咖的思考法则、工作方式、逻辑体系网赚站