Как конвертировать C ++ Variant в JSON? - PullRequest
3 голосов
/ 08 апреля 2011

Как я могу преобразовать Variant в нотацию объектов сценариев Java в (windows) c ++?

У меня есть аппаратная часть, которая возвращает вариант, который может содержать массив (float), строку или логические данные. Все варианты содержимого должны быть легко преобразованы в JSON, но есть ли библиотека JSON, которая делает это готовым для варианта? Или ... Есть ли библиотека JSON (на с ++), которая ест почти все и возвращает правильный JSON.

В настоящее время мой JSON-конвертер (источники, которые я скачал со случайного сайта) не понимает toJson (и вариант).

Я ищу (псевдокод):

switch (variant.type):
    type1:
        return json.dump(variant.value)
    default:
        return json(stringify(variant.value))

Суть в том, чтобы получить проверенное и работающее решение с минимальными усилиями.

edit Под вариантом я подразумеваю VARIANT для Windows: msdn.microsoft.com/en-us/library/ms221627(VS.80).aspx

ш

Юха

Ответы [ 2 ]

1 голос
/ 09 апреля 2011

Я думаю, вам нужно написать это преобразование вручную. Я не знаю ничего, что могло бы перевести VARIANT в класс значений json или jsoncpp. Так что просто создайте переключатель, который проверяет VARTYPE vt; элемент VARIANT и основывает на этом преобразование, например, в jsoncpp Value. Возможно, вам не нужно преобразовывать каждый тип типов VARIANT, поэтому начните с некоторых базовых типов (VT_I4, VT_UI4, VT_BSTR, VT_BOOL) и, если необходимо, запишите пропущенные типы.

0 голосов
/ 08 апреля 2011

Вы проверили JsonCpp ?В прошлом мне повезло с этим.

Вы можете использовать его класс FastWriter для вывода строки JSON непосредственно из варианта значения.

...