外链论坛

 找回密码
 立即注册
搜索
查看: 28|回复: 5

快速入门 JSON 数据格式

[复制链接]

3050

主题

155

回帖

9923万

积分

论坛元老

Rank: 8Rank: 8

积分
99238941
发表于 2024-10-10 03:58:48 | 显示全部楼层 |阅读模式

引言

JSON,全叫作 JavaScript Object Notion,类似于XML,YAML,Properties等,是一种数据交换格式,相比于XML,更简单,更轻量,更易理解。

JSON vs XML

运用

JSON 日前被广泛做为 Web 研发中前后端数据的交换格式(尤其是 Rest API 中)。

例如百度:

百度

例如b站:

bilibili

除此以外,JSON 还经常做为配置文件的格式。

如 VsCode的配置文件:

VScode Settings

如 Eslint 的配置文件:

Eslint Settings

JetBrains 机构新发布的 Fleet IDE 运用 JSON 做为配置文件:

Fleet Settings

优点

总体来讲,JSON拥有两个优点:

第1,语法非常简单,如下面这个例子:

{

  "name":          "古月有三木"

,

  "university":    "whu"

,

  "gender":        "男"

,

  "isProgrammer":  true

}

不论是研发者还是运用者,都很容易理解这个信息。

同期,又由于 JSON 是 Javascript 的子集,因此前端研发者几乎能够无痛上手,这是 JSON 被广泛用于前后端数据交换的原由之一。

第二,得益于 JSON 的简洁,相针对 XML,编写一个 JSON 解析器就容易的多,事实上,日前几乎所有流行的编程语言都供给了对 JSON 的解析。

数据类型

JSON 支持以下几种数据类型:

String,字符串类型,强制为 UTF-8 编码Number,数值类型,支持整数、浮点数、科学计数法Boolean,布尔类型,true/falseNull,空值Array,数组,数组的值能够为 String, Number, Boolean, Null, Array ObjectObject,对象类型,对象的键必须为字符串,值能够为六种类型之一。

Object

Object 是键值对的集合,格式为:

Object, from json.org

其中键必须为字符串,值能够为六种类型之一,重视,键和值之间需要运用 : 隔开,区别键值对之间需要运用 , 隔开,但最后一个键值对后不可加 , 。

Array

Array 是值的有序列表,格式如下:

Array, from json.org

其类似于编程语言中的数组,值能够为六种类型之一,区别值之间需要运用 , 隔开,但最后一个值后面不可添加 ,。

实质运用

上文已然说到日前都数主流语言均供给对 JSON 的解析,下面咱们看几个例子。

JavaScript

JavaScript 供给了对 JSON 的原生解析办法

const jsonStr = 

`

{

  "name": "Civitasv",

  "university": "Whu",

  "age": 22,

  "gender": "M",

  "isProgrammer": true

}

`
const jsonObject = JSON.parse(jsonStr)// 运用 Json.parse 解析 Json 字符串Object.keys(jsonObject).forEach(item =>

 {

  console.log(item, ": "

, jsonObject[item])

})

console.log("=============================="

)

const toJsonStr = JSON.stringify(jsonObject) // 运用 Json.stringfy 将 json 对象输出为 json 字符串console

.log(toJsonStr)

Python

Python 中的 json 库供给了对  JSON 的解析办法

import

 json

jsonStr = ""

"

{

  "
name": "Civitasv

",

  "
university": "Whu

",

  "
age

": 22,

  "
gender": "M

",

  "
isProgrammer

": true

}

"
""jsonObject = json.loads(jsonStr)// 运用 json.loads 将 json 字符串解析为 python 对象for item in

 jsonObject:

  print("{}: {}"

.format(item, jsonObject[item]))

print("=============================="

)

toJsonStr = json.dumps(jsonObject, ensure_ascii=False)// 运用 json.dumps 将 python 对象解析为 json 字符串

print(toJsonStr)

C++

C++ 中有许多的 JSON 解析库,运用 nlohmann 的 json 库介绍如下。

#include "json.hpp"#include <string>#include <iostream>using

 json = nlohmann::json;

int main()

{

  std::string jsonStr = 

R"(

    {

      "name": "Civitasv",

"university": "Whu",

      "age": 22,

      "gender": "M",

      "isProgrammer": true

    }

  )"

;

  json jsonObject = json::parse(jsonStr); // 运用 json::parse 解析 json 字符串  for (auto

&[key, value] : jsonObject.items())

  {

    std::cout << key << ": " << value << "\n"

;

  }

  std::cout << "==============================" << \n

;

  std::string toJsonStr = jsonObject.dump(); // 使用 dump 办法将 json 对象解析为字符串  std::cout << toJsonStr << \n

;

}

结语

以上是对 JSON 数据格式以及运用办法的介绍,本质上说,JSON 只是拥有必定格式的字符串,但编写方和运用方遵循相同的规范,就能够实现数据的交换了,因此,JSON 解析器就显出非常重要,我将在将来文案详细介绍怎样运用 C++ 编写一个基本的 JSON 解析器,代码我已然成为了位置A Tiny Json Parser[1] ,对此感兴趣的能够先看一下代码。

点个关注不迷路。

参考资料

[1]

A Tiny Json Parser: https://github.com/Civitasv/mini-json-parser





上一篇:浅谈前后端交互的基本原理
下一篇:前后端数据传输约定探讨
回复

使用道具 举报

3112

主题

3万

回帖

9910万

积分

论坛元老

Rank: 8Rank: 8

积分
99108663
发表于 2024-10-10 15:55:17 | 显示全部楼层
期待楼主的下一次分享!”
回复

使用道具 举报

3083

主题

3万

回帖

9909万

积分

论坛元老

Rank: 8Rank: 8

积分
99098788
发表于 2024-10-10 22:35:50 | 显示全部楼层
顶楼主,说得太好了!
回复

使用道具 举报

2983

主题

3万

回帖

9910万

积分

论坛元老

Rank: 8Rank: 8

积分
99109240
发表于 2024-10-31 23:51:22 | 显示全部楼层
软文发布论坛开幕式圆满成功。 http://www.fok120.com
回复

使用道具 举报

2979

主题

3万

回帖

9956万

积分

论坛元老

Rank: 8Rank: 8

积分
99569190
发表于 2024-11-6 19:39:33 | 显示全部楼层
你字句如珍珠,我珍藏这份情。
回复

使用道具 举报

3039

主题

3万

回帖

9606万

积分

论坛元老

Rank: 8Rank: 8

积分
96065878
发表于 前天 10:35 | 显示全部楼层
你的见解真是独到,让我受益良多。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点统计|Archiver|手机版|小黑屋|外链论坛 ( 非经营性网站 )|网站地图

GMT+8, 2024-11-18 01:37 , Processed in 0.144708 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.