• 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 << "
    
    姓名: " << 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
  • 相关阅读:
    “==” 和 Equals()
    数据持久层的设计
    Jquery Validation :多个按钮都需要做提交验证的解决方案
    留住异常的堆栈信息【throw ex 和 throw 的区别】
    [转] eval() may be evil
    框架结构和脚本跨域的问题
    ue4 材质MipLevels
    spring+json+jquery
    a different object with the same identifier value was already associated with the session错误
    kali 更新国内apt源 (转)
  • 原文地址:https://www.cnblogs.com/mupiaomiao/p/4755538.html
Copyright © 2020-2023  润新知