您的位置:首页 > 娱乐 > 明星 > 微信公众号是干什么用的_爱媛直播_怎么给产品找关键词_seo怎么优化关键词排名

微信公众号是干什么用的_爱媛直播_怎么给产品找关键词_seo怎么优化关键词排名

2024/12/22 17:05:16 来源:https://blog.csdn.net/Edward1027/article/details/144294479  浏览:    关键词:微信公众号是干什么用的_爱媛直播_怎么给产品找关键词_seo怎么优化关键词排名
微信公众号是干什么用的_爱媛直播_怎么给产品找关键词_seo怎么优化关键词排名

文章目录

  • 一、概念
    • 1.json官网
    • 2.json的概念
    • 3.序列化方案:xml、json
  • 二、json的数据类型
    • 1.json的键:必须是带双引号的字符串
    • 2.json的值:6种数据类型
      • (1)对象 { }
      • (2)数组 [ ]
  • 三、Python中的json
    • 1.序列化:Python对象 转 json
    • 2.反序列化:json 转 Python对象
      • (1)读取json文件:load()
      • (2)读取json字符串:loads()
      • (3)获取json中的键:get()
  • 四、C++中的json
    • 1.nlohmann/json库
    • 2.json对象
    • 3.json对象是array:下标填数字
    • 4.序列化、反序列化
  • 五、json的注释

一、概念

1.json官网

1.json官网:www.json.org
2.json的维基百科:https://en.wikipedia.org/wiki/JSON


2.json的概念

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人类阅读和编写,同时也易于机器解析和生成。JSON 主要用于服务器与客户端之间的数据交换,尤其在 Web 开发中应用广泛。

JSON 由 JavaScript 的对象表示法(object notation)演变而来,但由于其简洁性和可移植性,它被广泛应用于多种编程语言中。JSON 是完全语言独立的,但是它使用了 JavaScript 的语法,因此非常易于理解和使用。


3.序列化方案:xml、json

JSON比XML更轻量级。
在这里插入图片描述

在这里插入图片描述



二、json的数据类型

json既可以是object (键值对的集合),也可以是array (值的有序集合)。
json支持嵌套结构。


1.json的键:必须是带双引号的字符串

键(Key)要求
必须是字符串:在 JSON 中,所有的键(key)必须是字符串,并且必须用双引号 " 包裹。JSON 不允许使用数字、布尔值、null 或其他类型作为键。

有效的键:“name”, “age”, “address”
无效的键:name, age, 123(这些没有双引号,不能作为 JSON 键)
区分大小写:JSON 键是区分大小写的,这意味着 “name” 和 “Name” 被视为不同的键。

不能包含某些特殊字符:键名虽然是字符串,但通常建议避免包含特殊字符,如空格、逗号、冒号等,因为这可能导致解析错误。通常,JSON 键的字符集应限制为字母、数字、下划线 _、冒号等。


2.json的值:6种数据类型

json值的数据类型示例Python映射类型C++映射类型
对象 (object){“name” : “Edward”, “age” : 25}字典 dictnlohmann::json (嵌套对象)
数组 (array)[“apple”, “banana”]列表 liststd::vector<T>
字符串 (string)“Edward”strstd:string
数字 (number)25, 3.14int 或 floatint 或 double
布尔值 (boolen)true, falseTrue 或 Falsebool
空值 (null)nullNonenullptr

(1)对象 { }

对象(Object) { }

对象:由一对大括号 {} 包围,包含键值对
键和值之间用冒号: 分隔
键值对之间用逗号, 分隔。

例如:

{"name" : "Edward","age"  : 25,"city" : "Shanghai","hobbies" : ["running", "coding", "travelling", "reading"]
}

(2)数组 [ ]

数组 (Array) [ ]

数组:由一对方括号 [] 包围,包含多个值,值之间用逗号 , 分隔。例如:

["apple", "banana", "cherry"]
{"test_cases": [{"sequence_str": ["begin","sip_90","vms_window","pcie_speed_switch","end"],"repeat": 3,"id": "fail_test"},{"sequence_str": ["begin","pcie_3_7","end"],"repeat": 1,"id": "ppcie_test"}]}



三、Python中的json

1.序列化:Python对象 转 json

json.dump() 和 json.dumps() 是序列化的操作( 将 Python 对象转为json字符串)

序列化(Serialization)是将 Python 对象转换为一种可以存储或传输的格式,例如 JSON 格式。

import jsondata = {"name": "Alice", "age": 25}# 使用 json.dump() 序列化为 JSON 并写入文件
with open('data.json', 'w') as file:json.dump(data, file)# 使用 json.dumps() 序列化为 JSON 字符串
json_string = json.dumps(data)
print(json_string)  # 输出: {"name": "Alice", "age": 25}

2.反序列化:json 转 Python对象

json.load() 和 json.loads() 是反序列化的操作 (将 json 字符串转为 Python 对象)

json.load(file) 是 Python 标准库 json 模块中的一个方法,用于从文件中读取 JSON 数据并将其解析为 Python 对象


(1)读取json文件:load()

with open('data.json', 'r') as file:data = json.load(file)

举例:

import jsondef print_json():with open('my_json.json' , 'r', encoding='utf-8') as file:data = json.load(file)   #使用 json.load()函数,读取json文件内容,并解析为Python对象print(data)                  #输出json中的所有数据def print_json_particular():with open('my_json.json' , 'r', encoding='utf-8') as file:data = json.load(file)#访问json中的特定数据print(f"name : {data['name']}")print("city : {}".format(data['city']))if __name__ == '__main__':#print_json()print_json_particular()
{"name" : "Edward","age"  : 25,"city" : "Shanghai","hobbies" : ["running", "coding", "travelling", "reading"]
}

(2)读取json字符串:loads()

json.load() 用于解析文件中的 JSON 数据。
json.loads() 用于解析字符串中的 JSON 数据

import jsonjson_string = '{"name": "Alice", "age": 25}'data = json.loads(json_string)  # 解析 JSON 字符串print(data)

(3)获取json中的键:get()

get()是Python中字典dict的函数,但是可以先用load()函数将json转化为字典,再用get()获取其键

注意,先import json



四、C++中的json

https://blog.csdn.net/Edward1027/article/details/141072003

1.nlohmann/json库

为了解析和处理 JSON 数据,C++ 需要借助第三方库,最常见的库是 nlohmann/json

C++ json库:
github搜json:nlohman/json
header-only形式:只用加头文件,不需要加链接选项

在这里插入图片描述


2.json对象

代码链接:https://github.com/WangEdward1027/workflow/blob/main/json/json.cpp

(1)json对象是object:下标填字符串
dump()是序列化

#include <iostream>
#include <string>
#include "nlohmann/json.hpp"
using std::cout;
using std::string;//json对象是obejct: []中是字符串, 整体是{  }
void test1()
{nlohmann::json json_object;           //创建一个空的json对象json_object["key"] = "value";         //json对象是一个objectstring context = json_object.dump();  //dump() : 序列化cout << context << "\n";
}//json对象是array: []中是数字, 整体是 [  ]
void test2()
{nlohmann::json json_object; json_object[0] = "value";json_object[1] = 2204;json_object.push_back(1234); //json对象是array,则支持push_back()方法 //加入一个object {  }json_object[3]["key1"] = "value1";//加入一个array [  ]nlohmann::json child_object;child_object[0] = "000";child_object.push_back("111");child_object.push_back("222");child_object.push_back("333");json_object.push_back(child_object);cout << json_object.dump() << "\n";
}//nlohmann::json::parse 解析字符串
void test3()
{char str[] = "[1,2,3,{\"key\":456}]";nlohmann::json json_object = nlohmann::json::parse(str);    cout << "json_object[0] = " << json_object[0] << "\n";cout << "json_object[1] = " << json_object[1] << "\n";cout << "json_object[2] = " << json_object[2] << "\n";cout << "json_object[3][\"key\"] = " << json_object[3]["key"] << "\n";
}int main()
{test1();/* test2(); *//* test3(); */return 0;
}

3.json对象是array:下标填数字

数组可用push_back方法
在这里插入图片描述


4.序列化、反序列化

1.序列化:
dump()方法,将json对象序列化为string字符串

2.反序列化/解码/解析:
parse()方法,将string字符串解析为json对象。要求严格字符串符合json的格式。



五、json的注释

1.标准的 JSON 格式 不支持注释


2.使用键值对模拟注释:

{"_comment": "This is a comment","name": "Alice","age": 30
}

3.在代码中进行注释处理

另一种常见的做法是在代码中处理注释,而不是在 JSON 文件本身中放置注释。例如,在读取 JSON 文件后,使用脚本来忽略注释部分。
例如,你可以在加载 JSON 文件之前,将文件中的注释行(例如以 // 或 /* */ 开头的行)先删除掉:

import jsondef load_json_with_comments(file_path):with open(file_path, 'r') as file:content = file.readlines()# 去掉注释行content = [line for line in content if not line.strip().startswith("//") and not line.strip().startswith("/*")]# 重新将内容拼接成字符串cleaned_content = "".join(content)# 解析 JSONreturn json.loads(cleaned_content)# 加载带注释的 JSON 文件
data = load_json_with_comments("data_with_comments.json")
print(data)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com