Poco学习(二)

我的梦境 提交于 2019-12-06 04:41:27

 

1. Poco::JSON

/////////////////// POCO::JSON /////////////////////
#include "Poco/JSON//Parser.h"
#include "Poco/Dynamic/Var.h"
#include <fstream>

void CreateJson()
{
    Poco::JSON::Object root, temp;
    Poco::JSON::Array province, cities;

// 1.
    //对中文的支持不好
    cities.add("大庆");
    cities.add("哈尔滨");
    temp.set("name", "黑龙江");
    temp.set("cities", cities);
    province.add(temp);
    
    cities.clear(); temp.clear();
    cities.add("深圳");
    cities.add("广州");
    temp.set("name", "广东");
    temp.set("cities", cities);
    province.add(temp);

    root.set("province", province);
    root.set("country", "中国");
    
    std::ostringstream osstr;
    root.stringify(osstr, 2);//中文显示不出
    std::string s = osstr.str();
    /* 结果:
{
  "country" : "中国",
  "province" : [
    {
      "cities" : [
        "\u00B4\u00F3\u00C7\u00EC",
        "\u00B9\u0FB6\u0EF1\u00F5"
      ],
      "name" : "\u00BA\u00DA\u00C1\uD82B\uDF6D"
    },
    {
      "cities" : [
        "\u00C9\u00EE\u00DB\u00DA",
        "\u00B9\u00E3\u00D6\u00DD"
      ],
      "name" : "\u00B9\u3DAB"
    }
  ]
}    
    */

//2.
    cities.add("daqing");
    cities.add("haerbin");
    temp.set("name", "heilongjiang");
    temp.set("cities", cities);
    province.add(temp);

    cities.clear(); temp.clear();
    cities.add("shenzhen");
    cities.add("guangzhou");
    temp.set("name", "guangdong");
    temp.set("cities", cities);
    province.add(temp);

    root.set("province", province);
    root.set("country", "中国");


    Poco::Dynamic::Var js(root);
    std::string str =  js.toString();
    /* 结果如下
{
  "country" : "中国",
  "province" : [
    {
      "cities" : [
        "daqing",
        "haerbin"
      ],
      "name" : "heilongjiang"
    },
    {
      "cities" : [
        "shenzhen",
        "guangzhou"
      ],
      "name" : "guangdong"
    }
  ]
}
    */

    std::ofstream ofile("test.json");
    root.stringify(ofile, 4);
    ofile.close();
}
int main()
{
    CreateJson();
    return 0;
}
View Code

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!