数据交换- JSON
JSON 介绍
1. JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)
2. JSON 是轻量级的文本数据交换格式
3. JSON 独立于语言 [解读:即 java 、php、asp.net , go 等都可以使用 JSON]
4. JSON 具有自我描述性,更易理解, 一句话,非常的好用..
JSON 的定义格式
JSON 规则
1) 映射(元素/属性)用冒号 : 表示,"名称":值 , 注意名称是字符串,因此要用双引号引起来
2) 并列的数据之间用逗号 , 分隔。"名称 1":值,"名称 2":值
3) 映射的集合(对象)用大括号 {} 表示。{"名称 1":值,"名称 2":值}
4) 并列数据的集合(数组)用方括号 [] 表示。 [{"名称 1":值,"名称 2":值}, {"名称 1":值,"名称 2":值}]
5) 元素值类型:string, number, object, array, true, false, null
代码示例
1. <!DOCTYPE html> 2. <html lang="en"> 3. <head> 4. <meta charset="UTF-8"> 5. <title>json 快速入门案例</title> 6. <script type="text/javascript"> 7. 8. window.onload = function () { 9. /* 10. 1. myJson 就是一个json对象 11. 2. 演示如何获取到json对象的各个属性/key 12. */ 13. var myJson = { 14. "key1": "大家好", // 字符串 15. "key2": 123, // Number 16. "key3": [1, "hello", 2.3], // 数组 17. "key4": {"age": 12, "name": "jack"}, //json对象 18. "key5": [ //json数组 19. {"k1": 10, "k2": "milan"}, 20. {"k3": 30, "k4": "smith"}, 21. 22. ] 23. }; 24. 25. //1. 取出key1 26. console.log("key1= ", myJson.key1); 27. //2. 取出key3 28. console.log("key3= ", myJson.key3); 29. // 可以对key3取出的值(Array), 遍历 30. for (var i = 0; i < myJson.key3.length; i++) { 31. console.log("第%i个元素的值= " , i, myJson.key3[i]); 32. } 33. //3. 取出key4 34. console.log("key4= " , myJson.key4 , " name= " , myJson.key4.name); 35. //4. 取出key5 36. console.log("key5= " , myJson.key5, " k4= ", myJson.key5[1].k4) 37. } 38. 39. </script> 40. </head> 41. <body> 42. <h1>json 快速入门案例</h1> 43. </body> 44. </html>
JSON 对象和字符串对象转换
应用案例
1. JSON.stringify(json)功能: 将一个 json 对象转换成为 json 字符串 [简单说名字来源.] Serialize
2. JSON.parse( jsonString )功能: 将一个 json 字符串转换成为 json 对象
1. <!DOCTYPE html> 2. <html lang="en"> 3. <head> 4. <meta charset="UTF-8"> 5. <title>JSON对象和字符串对象转换</title> 6. <script type="text/javascript"> 7. window.onload = function () { 8. //解读JSON 9. //1.JSON 是一个js的内置对象(build-in),可以直接使用 10. // console.log("JSON=", JSON); 11. 12. //演示如何将以json对象->string 13. var jsonPerson = { 14. "name": "jack", 15. "age": 20 16. } 17. 18. console.log("jsonPerson=" , jsonPerson); 19. var strPerson = JSON.stringify(jsonPerson); 20. console.log("strPerson= ", strPerson, " strPerson类型= ", typeof strPerson); 21. 22. //string->json 23. //注意要转成json对象的string 格式必须满足json格式 24. var strDog = "{\"name\":\"小黄狗\", \"age\":2}"; 25. var jsonDog = JSON.parse(strDog); 26. console.log("jsonDog= ", jsonDog); 27. 28. } 29. </script> 30. </head> 31. <body> 32. <h1>JSON对象和字符串对象转换</h1> 33. 34. </body> 35. </html>
注意事项和细节
1、 JSON.springify( json对象) 会返回对应 string, 并不会影响原来json对象,演示
2、JSON.parse(string)函数会返回对应的 json 对象, 并不会影响原来 string
3、在定义 Json 对象时, 可以使用 ' ' 表示字符串,
比如 var json_person = {"name": "jack", "age": 100};
也可以写成 var json_person = {'name': 'jack', 'age': 100};
4、但是在把原生字符串转成 json 对象时, 必须使用 "", 否则会报错 比如:
var str_dog = "{'name':'小黄狗', 'age': 4}"; 转 json 就会报错
5、JSON.springify(json 对象) 返回的字符串, 都是 "" 表示的字符串, 所以在语法格式正确
的情况下, 是可以重新转成 json
代码演示
1. <!DOCTYPE html> 2. <html lang="en"> 3. <head> 4. <meta charset="UTF-8"> 5. <title>json和字符串转换的注意事项和细节</title> 6. <script type="text/javascript"> 7. window.onload = function () { 8. 9. var jsonPerson = { 10. "name": "jack", 11. "age": 20 12. } 13. 14. //1. JSON.springify(json对象) 会返回对应string, 并不会影响原来json对象 15. // 可以这样理解 java基础 int n = 10; double n2 = (double)n; 16. var strPerson = JSON.stringify(jsonPerson); 17. console.log("jsonPerson=", jsonPerson); 18. 19. //2. JSON.parse(string) 函数会返回对应的json对象, 并不会影响原来string 20. 21. var strDog = "{\"name\":\"小黄狗\", \"age\":2}"; 22. var jsonDog = JSON.parse(strDog); 23. console.log("strDog=", strDog, " 类型= ", typeof strDog); 24. 25. //3. 在定义Json对象时, 可以使用 ' ' 表示字符串 26. // 前面的key 可以不用" " 或者 ' ' 27. 28. var jsonPerson2 = { 29. name: 'jack', 30. age: 20 31. } 32. console.log("jsonPerson2=", jsonPerson2); 33. //4. 但是在把原生字符串转成 json对象时, 必须使用 "", 否则会报错 比如 34. // 工作时,非常容易错 35. var strdog3 = "{\"name\":\"小黄狗~\", \"age\": 4}"; 36. JSON.parse(strdog3); 37. 38. //5. JSON.springify(json对象) 返回的字符串, 都是 "" 表示的字符串 39. var strPerson2 = JSON.stringify(jsonPerson2); 40. var parse = JSON.parse(strPerson2); 41. console.log("parse=", parse); 42. 43. } 44. </script> 45. </head> 46. <body> 47. 48. </body> 49. </html>
JSON 在 java 中使用
说明
1. java 中使用 json,需要引入到第 3 方的包 gson.jar
2. Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。
3. 可以对 JSON 字符串 和 Java 对象相互转换
JSON 在 Java 中应用场景
1. Javabean 对象和 json 字符串 的转换
2. List 对象和 json 字符串 的转换
3. map 对象和 json 字符串
应用场景示意图
应用实例
Book.java
1. public class Book { 2. private Integer id; 3. private String name; 4. 5. public Book(Integer id, String name) { 6. this.id = id; 7. this.name = name; 8. } 9. 10. public Integer getId() { 11. return id; 12. } 13. 14. public void setId(Integer id) { 15. this.id = id; 16. } 17. 18. public String getName() { 19. return name; 20. } 21. 22. public void setName(String name) { 23. this.name = name; 24. } 25. 26. @Override 27. public String toString() { 28. return "Book{" + 29. "id=" + id + 30. ", name='" + name + '\'' + 31. '}'; 32. } 33. }
JavaJson.java
TypeToken<List<Book>>() {}如果不知道这个意思请看这个的博客
json字符串 - list对象_list json字符串_尘觉的博客-CSDN博客
1. 2. import com.google.gson.Gson; 3. import com.google.gson.reflect.TypeToken; 4. 5. import java.lang.reflect.Type; 6. import java.util.ArrayList; 7. import java.util.HashMap; 8. import java.util.List; 9. import java.util.Map; 10. 11. public class JavaJson { 12. public static void main(String[] args) { 13. 14. //创建一个gson对象,做完一个工具对象使用 15. Gson gson = new Gson(); 16. 17. //演示javabean 和 json字符串的转换 18. Book book = new Book(100, "Java"); 19. 20. //1. 演示把javebean -> json字符串 21. String strBook = gson.toJson(book); 22. System.out.println("strBook=" + strBook); 23. 24. //2. json字符串->javabean 25. //(1) strBook 就是 json字符串 26. //(2) Book.class 指定将 json字符串转成 Book对象 27. //(3) 底层是反射机制 28. Book book2 = gson.fromJson(strBook, Book.class); 29. System.out.println("book2=" + book2); 30. 31. //3. 演示把list对象 -> json字符串 32. List<Book> bookList = new ArrayList<>(); 33. bookList.add(new Book(200, "天龙八部")); 34. bookList.add(new Book(300, "三国演义")); 35. String strBookList = gson.toJson(bookList); 36. System.out.println("strBookList= " + strBookList); 37. 38. //4. 演示把json字符串 -> list对象 39. Type type = new TypeToken<List<Book>>() {}.getType(); 40. 41. List<Book> bookList2 = gson.fromJson(strBookList, type); 42. System.out.println("bookList2= " + bookList2); 43. 44. 45. //5, 把map对象->json字符串 46. Map<String, Book> bookMap = new HashMap<>(); 47. bookMap.put("k1", new Book(400, "射雕英雄传")); 48. bookMap.put("k2", new Book(500, "西游记")); 49. 50. String strBookMap = gson.toJson(bookMap); 51. System.out.println("strBookMap=" + strBookMap); 52. 53. //6. 把json字符串 -> map对象 54. Map<String, Book> bookMap2 = gson.fromJson(strBookMap, 55. new TypeToken<Map<String, Book>>() { 56. }.getType()); 57. System.out.println("bookMap2=" + bookMap2); 58. 59. } 60. }

