Gbenbam Ответов: 1

Как я могу использовать jsoncpp для передачи этих данных?


Я конвертирую настольное приложение в клиентскую версию клиент-серверного приложения.

Мне нужны данные JSON, которые будут использоваться в вызове функции, например

void ProcessData(long long Type,long long Kind, long long Shape,long long Index,Json::Value &jValue )
{
   int iState = 1;
   jValue[Type][MakeString(Kind)][Shape][MakeString(Index)] = 1;
}


Где MakeString () - это функция, которая преобразует long long в string.

Проблема заключается в том, что оператор[] сообщает, что существует множество совпадений для типа аргумента.

Как я могу обойти многочисленные типы аргументов, учитывая тот факт, что код, в который вводится json, уже имеет структуру.

Если есть лучший способ справиться с этим, я хотел бы знать.Его просто, что параметр функции не изменяются.

Что я уже пробовал:

Я потратил несколько часов на поиск решения в Google.

Richard MacCutchan

Каково определение MakeString, каково определение jValue? Пожалуйста, приложите больше усилий, чтобы предоставить надлежащие детали в ваших вопросах.

Gbenbam

Json::Value-это тип значения JsonCpp, который будет знаком людям, использующим JsonCpp.

std::string MakeString(long long llValue)
{ char Buffer[100];
sprintf(буфер,"%lld",llValue);

return std::string(Buffer);
}

1 Ответов

Рейтинг:
1

KarstenK

Если преобразование типов не ясно, вы столкнетесь с проблемой получения странных ошибок. Лучше применить явное преобразование типов следующим образом:

[(const char*) MakeString(Index)] 

Вполне возможно, что автоматический бросок из строки-это первоначальная проблема. Мне не нравятся такие сцепленные выражения, потому что это затрудняет отладку.
String s= MakeString(Index);
[(const cahr*) s] // use result in json 


Gbenbam

Это числовое индексирование, которое является проблемой, а не строкой.

Он говорит, что есть три возможных совпадения: а именно, int, long , long long.