文本数据交换格式 -- JSON

文本数据交换格式 – JSON

​ 当大家需要使用JSON却不记得如何使用时,可以使用 JSon 在线文档:https://www.w3school.com.cn/js/js_json_intro.asp。里面不仅有详细的解说和用法,还有具体的实例,更便于理解和学习。

​ JSON还有一个在线校验格式化的JSON工具,可以帮助大家学习理解JSON转换成其他实体是什么形式,验证JSON格式是否正确,里面还可以在线生成、编码转换等等,感兴趣的可以去看看:https://www.bejson.com。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-okYRSTIT-1683674460010)(C:\Users\w’y’x’n’l’c\AppData\Roaming\Typora\typora-user-images\image-20230510064010734.png)]

JSON介绍

​ JSON 是 JavaScript 对象表示法(JavaScript Object Notation),JSON 是存储和交换文本信息的语法。类似 XML。JSON 比 XML 更小、更快,更易解析。它是轻量级的文本数据交换格式。具有自我描述性,更易理解。

​ JSON 独立于语言:因为JSON 解析器和 JSON 库支持许多不同的编程语言。

JSON 与 XML 的相同之处:

  • JSON 和 XML 数据都是 “自我描述” ,都易于理解。
  • JSON 和 XML 数据都是有层次的结构。
  • JSON 和 XML 数据可以被大多数编程语言使用。

JSON 与 XML 的不同之处:

  • JSON 不需要结束标签。

  • JSON 更加简短。

  • JSON 读写速度更快。

  • JSON 可以使用数组。

    最大的不同是:XML 需要使用 XML 解析器来解析,JSON 可以使用标准的 JavaScript 函数来解析。

    对于 AJAX 应用,JSON 比 XML 数据加载更快,而且更简单。

JSON 语法规则

JSON 语法是 JavaScript 对象表示语法的子集。

  • 数据在名称/值对中:名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值:。“name” : “小白”。

    ​ JSON 值可以是:

    • 数字(整数或浮点数)
    • 字符串(在双引号中)
    • 逻辑值(true 或 false)
    • 数组(在中括号中)
    • 对象(在大括号中)
  • 数据由逗号分隔

  • 大括号保存对象:对象可以包含多个名称/值对:

  • 中括号保存数组

JSON 对象和字符串对象转换

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

    // 把 json 对象转换成为字符串对象
    var jsonStr =JSON.stringify(jsonObj); 
    
  2. JSON.parse( jsonString )功能: 将一个 json 字符串转换成为 json 对象

// 把 json 对象的字符串,转换成为 json 对象
var jsonObj2 = JSON.parse(jsonStr)

注意

1、 JSON.springify(json 对 象) 返 回对 应的 string, 并 不 会影 响 原 来 json 对 象。

2、JSON.parse(string) 函数会返回对应的 json 对象, 并不会影响原来 string 。

3、在定义 Json 对象时, 可以使用 ’ ’ 表示字符串, 比如 var json_person = {“name”: “jack”, “age”: 10}; 也可以写成 var json_person = {‘name’: ‘jack’, ‘age’: 10};

4、把原生字符串转成 json 对象时, 必须使用 “”, 否则会报错 比如: var str_dog = “{‘name’:‘小黄狗’, ‘age’: 4}”; 可以使用,但是转 json 就会报错。转换成json对象必须满足json语法。

5、JSON.springify(json 对象) 返回的字符串, 都是 “” 表示的字符串, 所以在语法格式正确 的情况下, 是可以重新转成 json 对象的.

JSON 的使用

​ JSON 在 java 中使用时,需要引入到第 3 方的包 gson.jar。Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以对 JSON 字符串 和 Java 对象相互转换。

一般用于三种转换
  1. Javabean 对象和 json 字符串 的转换

    // 把对象转成为 json 字符串
    String bookStr = gson.toJson(book)
    
    // 把 json 字符串转换成为 java 对象
    Book book2 = gson.fromJson(bookStr, Book.class);
    
  2. List 对象和 json 字符串 的转换

    //将 list 转成 json 字符串
    String bookListStr = gson.toJson(bookList);
    System.out.println("bookListStr=" + bookListStr);
    
    //将 json 字符串转成 List 集合方式 1
    //1. 要把复杂的 json 字符串转换成为 java 对象。需要继承 TypeToken 类
    //2. TypeToken 是一个自定义泛型类,在创建时,需要指定具体类型
    List<Book> bookList2 = gson.fromJson(bookListStr, new BookType().getType());
    System.out.println("bookList2=" + bookList2);
    
    //将 json 字符串转成 List 集合方式 2- 使用 匿名内部类
    List<Book> bookList3 = gson.fromJson(bookListStr, new TypeToken<List<Book>>() {}.getType());
    //通过匿名内部类调用其父类的无参构造器就可以使用 protected 修饰的构造器方法
    System.out.println("bookList3=" + bookList3);
    
  3. map 对象和 json 字符串 的转换

// 把 map 转换成为 json
String bookMapStr = = gson.toJson(bookMap);
System.out.println("bookMapStr=" + bookMapStr + " 类 型 =" +
bookMapStr.getClass());

// 把 json 转成 map
Map<String, Book> bookMap2 = gson.fromJson(bookMapStr, new
TypeToken<HashMap<String, }.getType());
System.out.println("bookMap2=" + bookMap2 + " 类型=" + bookMap2.getClass());
}

kMapStr, new
TypeToken<HashMap<String, }.getType());
System.out.println(“bookMap2=” + bookMap2 + " 类型=" + bookMap2.getClass());
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晨犀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值