项目作者: gkgfu

项目描述 :
我自己写的一个json解析器,使用c++语言
高级语言: C++
项目地址: git://github.com/gkgfu/json-parsing.git
创建时间: 2020-05-01T10:49:07Z
项目社区:https://github.com/gkgfu/json-parsing

开源协议:

下载


JSON PARSING

项目背景

我近来想要写一个天气预报的软件,想了想决定用c++语言开发。可是我申请的数据端口返回的是json文件。我发现似乎c++没有什么好用的json文件解析器,于是决定自己写一个。

安装

json_parsing.hpp文件下载到你的项目里直接包含就行了

如何使用

将字符串转为类

首先,你需要把一个json文件转成std::string,然后使用 json_object类来初始化一个json对象。

例:

  1. json_object obj("{\"name\":\"gkgfu\",\"age\":\"unknow\"}");

将一个对象分为几个不同的属性

在json中,一个对象有很多个属性。在我的项目里,我使用 json_property 类来存放单个的属性。

例:

  1. json_property property("\"age\":12");

当然,我们不会直接用构造函数来设置一个属性。我们可以使用json_property类中的getProperties()这一成员函数来获取一个json对象的属性。需要注意的是,它返回的是一个vector容器。

例:

  1. std::vector<json_property> properties = obj.getProperties();
  2. json_property property = properties.at(0);

属性中的key与value

在json中,一个属性包含一个key与一个value。

对于key值,由于其都是一个字符串,因此你都可以用json_property中的getKey()这一成员函数来获取。该成员函数的返回值是std::string。

例:

  1. std::string key = property.getValue();

对于value值,因为它可能拥有不同的类型,因此我设计了一个value_object类来保存value值。它能够通过类型转换直接转换为c++里拥有的类型与我设计的json_object类以及下文将要提到的json_array类。它们分别对应了json里的对象与数组。类似的,你可以使用json_propertygetValue()这一成员函数来获取它

例:

  1. value_object val = property.getValue();
  2. std::cout<<"age : "<<(int)(val.getValue())<<std::endl;//假定property中保存的是"age":12

关于数组

在我的项目里,为数组设计了一个类json_array。你可以使用它的getArray()这一成员函数来获取一个类型为value_objectvector数组。

例:

  1. json_object obj("{\"score\":[100,99,60]}");
  2. json_property property = obj.getProperties().at(0);
  3. json_array array = property.getValue();//自动类型转换
  4. std::vector<value_object> scores = array.getArray();
  5. int score1 = scores.at(0);
  6. std::cout<<score1<<std::endl;