Я строю проект 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)