JsonCPP Handling Unicode Key and Values

I am going to use non-ASCII characters as key in Json. Consider following example:

{
   "type":"net.aggregate",
   "post.source":"1209010340",
   "val":1000,
   "सर्वज्ञ पन्त.txt":"1234"
}

which is valid according to this site.

Now I would like to use this sample in my JSONCPP code. Consider

#include <iostream>
#include <fstream>
#include <jsonwriter.h>
#include <jsonreader.h>

int main()
{
    Json::Value root;
    Json::StyledStreamWriter writer;
    Json::Reader reader;
    std::string json = "{"type":"net.aggregate","post.source":"1209010340", "val":1000}";
    bool success = reader.parse(json,root);
    if(success)
    {
        std::cout << root << std::endl;
    }
    std::cout << root["post.source"] << std::endl;
    root["post.source"] = "12345678";
    std::cout << root << std::endl;
    std::ofstream file;
    file.open("asdf.json");
    writer.write(file, root);
    file.close();
    return 0;
}

The above code works fine when the key are non-unicode. I could add the key सर्वज्ञ पन्त.txt as root["सर्वज्ञ पन्त.txt"] = "1234", but this shows ???? when cout and also on file asdf.json.

How should I handle non-ascii characters? I would like to save those non-ascii characters as key/value and perform some sort of CRUD on them. Thank you..


Source: c++

Leave a Reply