首页 > 其他分享 >JSON

JSON

时间:2022-11-04 11:23:51浏览次数:92  
标签:XML 对象 JSON 数组 字符串 格式

数据交换格式

1、什么是数据交换格式

  • 数据交换格式,就是服务器端客户端之间进行数据传输与交换的格式
  • 前段领域,经常提及的两种数据交换格式分别是 XMLJSON
    • 其中 XML 用的非常少,所以,我们重点要学习的数据交换格式是 JSON

2、XML

什么是XML

  • XML 的英文全称是 EXtensible Markup Language,即可扩展标记语言
    • 因此,XML 和 HTML 类似,也是一种标记语言。

XML和 HTML的区别

  • XML 和 HTML 虽然都说标记语言,但是,它们两者之间没有任何的关系。
    • HTML 被设计用来描述网页上的内容,是网页内容的载体。
    • XML 被设计用来传输和存储数据,是数据的载体。

XML 的缺点

  • XML 格式臃肿,和数据无关的代码多,体积大,传输效率低。
  • 在JavaScript 中解析 XML 比较麻烦。

3、JSON

什么是JSON

  • 概念:JSON 的英文全称是 JavaScript Object Notation,即 JavaScript 对象表示法
    • 简单来讲,JSON 就是 JavaScript 对象和数组的字符串表示法
    • 它使用文本表示一个 JS 对象或数组的信息,因此,JSON 的本质是字符串
  • 作用:JSON 是一种轻量级的文本数据交换格式,在作用上类似于 XML,专门用于存储和传输数据。
    • 但是JSON 比 XML 更小、更快、更易解析
  • 现状:JSON 是在 2001 年开始被推广和使用的数据格式,到现今为止,JSON 已经成为了主流的数据交换格式

JSON的两种结构

  • JSON 就是用字符串来表示 JavaScript 的对象和数组。
    • 所以,JSON 中包含对象数组两种结构,通过这两种结构的互相嵌套,可以表示各种复杂的数据结构。

1、对象结构

  • 对象结构:对象结构在 JSON 中表示为 {} 括起来的内容。

    • 数据结构为 {key: value,key: value, ...} 的键值对结构。
    • 其中,key必须是使用英文的双引号包裹的字符串,value 的数据类型 可以是数字、字符串、布尔值、null、数组、对象 6种类型
  • // 注:里面所有的值都必须用双引号括起来
    {
        "name": "zs",
        "age": 20,
        "gender": "男",
        "address": null,
        "hobby": ["吃饭","睡觉","打豆豆"]
    }
    

2、数组结构

  • 数组结构:数组结构在JSON 中表示为 [] 括起来的内容。

    • 数据结构为 ["java","javascript",30,true]。
    • 数组中数据结构的类型可以是数字、字符串、布尔值、null、数组、对象、6种类型。
  • ["java","python","php"]
    [100,200,300.5]
    [true, false, null]
    [{"name":"zs", "age":20}, {"mame":"ls", "age":30}]
    [ ["苹果": "榴莲", "椰子"],[4, 50, 5] ]
    

3、JSON语法注意事项

  • 属性名必须使用双引号包裹
  • 字符串类型的值必须使用双引号包裹
  • JSON 中不允许使用单引号表示字符串
  • JSON 中不能写注释
  • JSON 的最外层必须是对象或数组格式
  • 不能使用 undefined 或函数作为 JSON 的值
  • JSON的作用:在计算机与网络之间存储和传输数据。
  • JSON的本质:用字符串来表示 JavaScript 对象数据或数组数据

4、JSON和JS对象的关系

  • JSON 是 JS对象的字符串表示法,它使用文本表示一个 JS 对象的信息,本质是一个字符串。

    • // 这是一个对象
      let obj = {a: 'hello', b: 'world'}
      
      // 这是一个 JSON 字符串,本质就是一个字符串
      let json = '{"a": "Hello", "b": "World"}'
      

5、JSON和JS对象的转换

  • 要实现从 JSON 字符串转换为 JS 对象,使用 JSON.parse() 方法:

    • let json = `{"name": "码农权","age":20}`;
      console.log(JSON.parse(json));
      // {name: "码农权", age: 20}
      
  • 要实现从 JS对象 转换JSON 字符串,使用JSON.stringify()方法:

    • let obj = {name: "码农权", age: 20};
      console.log(JSON.stringify(obj));
      // '{"name": "码农权","age":20}'
      

6、序列化和反序列化

  • 数据对象 转换为 字符串的过程,叫做序列化,例如:调用 JSON.stringify() 函数的操作,叫做 JSON 序列化。
  • 字符串转换为数据对象的过程,叫做反序列化,例如:调用 JSON.parse() 函数的操作,叫做 JSON 反序列化

标签:XML,对象,JSON,数组,字符串,格式
From: https://www.cnblogs.com/bingquan1/p/16857130.html

相关文章

  • 为什么JSON.parse会损坏大数字,如何解决这个问题?
    为什么大数字会被JSON.parse破坏?像 9123372036854000123 这样的长数字既是有效的JSON也是有效的JavaScript。当JavaScript将数值解析为数字时,事情就出错了。最初,Jav......
  • 解决本地浏览器运行项目时的跨域问题-Access to XMLHttpRequest at ‘file:///D:/WebP
     解决本地浏览器运行项目时的跨域问题-AccesstoXMLHttpRequestat'file:///D:/WebPracties/xxxxxx/data/funData.json问题描述解决办法一解决办法二解决方法三问题描......
  • Controller输出JSON数据 乱码解决方案
    ​我们可以在springmvc的配置文件上添加一段消息StringHttpMessageConverter转换配置!<mvc:annotation-driven><mvc:message-convertersregister-defaults="true">......
  • Python json模块
    一、JSON介绍JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,易于人阅读和编写。二、常用方法方法描述json.loads()将JSON字符串转化为Python......
  • web服务器15 jsonp格式接口
    概念:浏览器端通过<script>标签的src属性,请求服务器上的数据,同时,服务器返回一个函数的调用。这种请求数据的方式叫做SONP。特点:①JSONP不属于真正的Ajax请求,因为它没有使用......
  • 关于PowerShell Convertto-Json 管道问题
    问题如果一个空数组转成json之后,你期望的是什么?总不能是null吧?如果一个数组内有一个元素,转成json之后,你期望的是什么?总不能不是数组了吧?bug这就是bug啊!很好,查到了h......
  • .net 温故知新:【8】.NET 中的配置从xml转向json
    一、配置概述在.netframework平台中我们常见的也是最熟悉的就是.config文件作为配置,控制台桌面程序是App.config,Web就是web.config,里面的配置格式为xml格式。在xml里面......
  • ajax post json
    varlist={ "province":province, "city":city, "county":county}$.ajax({ url:"postOption", type:"post", contentType:"application/json", dat......
  • 【c&c++】 cjson使用_Keil环境下Jansson解析库的使用——基于STM32F103
    前言之前我曾经写过几个JSON解析库的使用方法:Qt平台下使用QJson解析和构建JSON字符串使用cJSON库解析JSON使用cJSON库构建JSON对于嵌入式开发,比较常用的就是cJSON解析......
  • 【c&c++】[C++]使用Jansson生成与解析json字符串
    安装配置序列化与反序列化生成Json解析JsonJansson是一个用于解码、编码、操控JSON的C库:简单直观的API和数据模型没有依赖项完整的Unicode支持(UTF-8)安装 ......