Poco C++——JSON解析

#include <iostream>
#include "Poco/Dynamic/Var.h"
#include "Poco/Dynamic/Pair.h"
#include "Poco/Dynamic/VarIterator.h"
#include "Poco/JSON/Array.h"
#include <vector>
#include <map>
#include "Poco/JSON/Parser.h"

using Poco::Dynamic::Var;
using Poco::JSON::Parser;
using Poco::Dynamic::Pair;
using Poco::JSON::Array;
using Poco::JSON::Object;

int main(int argc, const char * argv[]) {
    using namespace std;
    Poco::JSON::Object scores;
    scores.set("数学", 98);
    scores.set("英语", 99);
    scores.set("语文", 89);
    scores.set("化学", 100);
    scores.set("物理", 98);
    scores.set("生物", 96);
    Poco::JSON::Object student;
    student.set("name", "小南");
    student.set("address", "四川省成都市锦江区锦华路一段7号爱家丽苑1栋1单元305室");
    student.set("class", "四川省成都市第七中学2010级2班");
    student.set("grade", Poco::Dynamic::Var(scores));
    Poco::Dynamic::Var JSON(student);
    cout << JSON.toString() << endl;
    string theJSON = JSON.toString();
    Poco::JSON::Parser parser;
    Poco::Dynamic::Var json = parser.parse(theJSON);
    Poco::JSON::Object theObj = *json.extract<Poco::JSON::Object::Ptr>();
    Poco::Dynamic::Var theScores = theObj.get("grade");
    Poco::Dynamic::Var name = theObj.get("name");
    Poco::Dynamic::Var address = theObj.get("address");
    Poco::Dynamic::Var theClass = theObj.get("class");
    Poco::JSON::Object grade = *theScores.extract<Poco::JSON::Object::Ptr>();
    Poco::Dynamic::Var math = grade.get("数学");
    Poco::Dynamic::Var english = grade.get("英语");
    Poco::Dynamic::Var chinese = grade.get("语文");
    Poco::Dynamic::Var wuli = grade.get("物理");
    Poco::Dynamic::Var shengwu = grade.get("生物");
    Poco::Dynamic::Var huaxue = grade.get("化学");
    cout << "\n\n姓名: " << name.toString() << endl
         << "班级: " << theClass.toString() << endl
         << "地址: " << address.toString() << endl
         << "数学: " << math.convert<int>() << endl
         << "语文: " << chinese.convert<int>() << endl
         << "化学: " << huaxue.convert<int>() << endl
         << "物理: " << wuli.convert<int>() << endl
    << "生物: " << shengwu.convert<int>() << endl;
    return 0;
}

输出结果:
{
  "address" : "四川省成都市锦江区锦华路一段7号爱家丽苑1栋1单元305室",
  "class" : "四川省成都市第七中学2010级2班",
  "grade" : {
    "化学" : 100,
    "数学" : 98,
    "物理" : 98,
    "生物" : 96,
    "英语" : 99,
    "语文" : 89
  },
  "name" : "小南"
}


姓名: 小南
班级: 四川省宣汉中学2010级2班
地址: 四川省成都市锦江区锦华路一段7号爱家丽苑1栋1单元305室
数学: 98
语文: 89
化学: 100
物理: 98
生物: 96

原文链接: https://www.cnblogs.com/mupiaomiao/p/4755538.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/220999

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月13日 上午11:07
下一篇 2023年2月13日 上午11:07

相关推荐