Можете ли вы преобразовать быстрый json-объект c ++ в Json-объект Python? - PullRequest
1 голос
/ 07 июня 2019

Я строю проект C ++, который подключается к пользовательской базе кода Python и отправляю объект json в код Python. Поскольку кодовая база python принадлежит клиенту, я не могу изменить кодовую базу python для получения строки json. Я использую Python C / API для интерфейса.

Я создал небольшой файл python для преобразования строки json в объект json, используя библиотеку json в python. Я бы предпочел написать объект json на стороне C ++ с использованием rapidjson. Могу ли я построить объект Python json из C ++ quick 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)
...