可以将C ++快速json对象转换为Python Json对象吗?

时间:2019-06-07 20:40:50

标签: python json python-c-api rapidjson

我正在构建一个C ++项目,该项目连接到客户拥有的Python代码库,并将json对象发送到python代码。由于python代码库是客户拥有的,因此我无法修改python代码库以接收json字符串。我正在使用Python C / API作为接口。

我建立了一个小python文件,使用python的json库将json字符串转换为json对象。我宁愿使用rapidjson在C ++端编写json对象。我可以从C ++快速json构建python json对象,并在不将对象转换为字符串的情况下由python的json库读取吗?如果可能的话,哪种功能最适合将JSON文档转换为Python对象?

C++:
PyObject* packJsonDict;
PyObject* customerDict;

int PYCPP::getJsonToInterface()
{
    std::string json= "{\"pet\": \"dog\", \"count\": 5}";
    PyObject* JsonObject = m_pImpl->pack_JsonString(json);

    std::string function_string = "read_json";
    PyObject* args = PyTuple_Pack(1, JsonObject);

    //trying packing just the json string
    PyObject* runnableFunction = PyDict_GetItemString(customerDict,     (char*)function_string);
    PyObject* result = PyObject_CallObject(runnableFunction, args);
}

PyObject* PYCPP::pack_JsonString(std::string json_string)
{
    std::string function_string = "convert_jsonString_to_jsonObject";
    PyObject* args = PyTuple_Pack(1, PyString_FromString((char*)    json_string.c_str()) );

    //trying packing just the json string
    PyObject* runnableFunction = PyDict_GetItemString(packJsonDict,     (char*)function_string);
    PyObject* result = PyObject_CallObject(runnableFunction, args);

    if(result == nullptr)
    {
        std::cout << "result was null!\n";
    }
    return result;
}

Python:
import json

def convert_jsonString_to_jsonObject(jsonString):

    print "converting:", jsonString

    return json.loads(jsonString)

0 个答案:

没有答案