欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 金融 > 开发小技巧分享 01:JSON解析工具

开发小技巧分享 01:JSON解析工具

2025/3/15 4:49:42 来源:https://blog.csdn.net/Hellomino_/article/details/144885592  浏览:    关键词:开发小技巧分享 01:JSON解析工具
1.百度词条

        JSON(JavaScript Object Notation,JavaScript对象表示法)是基于ECMAScript的一个子集设计的,是一种开放标准的文件格式和数据交换格式,它易于人阅读和编写,同时也易于机器解析和生成。JSON独立于语言设计,很多编程语言都支持JSON格式的数据交换。JSON是一种常用的数据格式,在电子数据交换中有多种用途,包括与服务器之间的Web应用程序的数据交换。其简洁和清晰的层次结构有效地提升了网络传输效率,使其成为理想的数据交换语言。其文件通常使用扩展名.json。

2.简述应用场景

        对于开发者而言,我们经常会遇到各种各样的配置文件,很多时候开发人员喜欢用较为轻便的json来存储相关的配置信息。

        json 是通过键值对的方式来存储需要的基本信息:

        便捷之处在于:多个键值对可以组成一组对象,多个对象可以组成一组对象数组

        键值对可以区别为    键值名称 和 键值

        键值名称: 字符串

        键值:数字、字符串、对象、数组、对象数组、复合对象,

        用json保存的数据看起来会比较简介明了,如图所示:

{                                                    #  一个复合对象"person": {                                        #  一个复合对象"name": "John",                                  #  一个字符串对象"age": 30,                                       #  一个数字对象"address": {                                     #  一个复合对象"street": "123 Main St",                       #  一个字符串对象"city": "New York",                            #  一个字符串对象"state": "NY",                                 #  一个字符串对象"zipcode": "10001"                             #  一个字符串对象},                       "phone_numbers": [                               #  一个对象数组{                                              #  一个复合对象"type": "home",                              #  一个字符串对象"number": "555-1234"                         #  一个字符串对象},                 {                                              #  一个复合对象"type": "work",                              #  一个字符串对象"number": "555-5678"                         #  一个字符串对象}]"favorite": ["reading","swimming","cycling"],    #  一个数组对象}
}
 3.json解析工具

        这里我们用到nlohmann/json库:https://github.com/nlohmann/json

4.代码简例

        以下代码简要的给出了解析代码,包含:

                解析字符串、

                解析数字、

                解析对象下的各个元素、

                解析对象数组

#include <nlohmann/json.hpp>
#include <iostream>
#include <fstream>using json = nlohmann::json;int main() {//加载json文件json j;ifstream jfile("test.json");if (!jfile) return -1;jfile >> j;jfile.close();// 访问 JSON 对象json person = j["person"];                //访问 person 对象string name = person["name"];             //访问 person 下的 name 键值 (字符串)     cout << "name : "<< name << endl;int age = person["age"];                  //访问 person 下的 age 键值 (数字)cout << "age : "<< age << endl;                 json address = person["address"];         //访问 address 对象        string street = address["street"];        //访问 address 下的 street 对象 (字符串)cout << "street : "<< street << endl;           string city = address["city"];            //访问 address 下的 city 对象 (字符串)cout << "city : "<< city << endl;                string state = address["state"];          //访问 address 下的 state 对象 (字符串)cout << "state : "<< state << endl;              string zipcode = address["zipcode"];      //访问 address 下的 zipcode 对象 (字符串)cout << "zipcode : "<< zipcode <<endl;        for(auto phone: person["phone_numbers"]) //访问 person 下的 phone_numbers 对象 (对象数组){string type = phone["type"];          //访问 phone_numbers 下的每个 type 对象 (字符串)cout << "type : "<< type << endl;            string number = phone["number"];          //访问 phone_numbers 下的每个 number 对象 (字符串)cout << "number : "<< number <<endl;          }cout << "favorites : " ;  for(auto favorite: person["favorites"])   //访问 person 下的 favorites 对象 (数组){cout << favorite << "  ";                   }       cout << endl;}

版权声明:

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

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

热搜词