Использование целочисленных ключей для Json (jsoncpp) - PullRequest
0 голосов
/ 17 октября 2019

У меня есть код C ++ 11, который принимает пару Jsons и меняет формат. В этой процедуре я хочу создать Json::Value объект, имеющий следующую структуру:

{ <int value>: [<int value>, <string value>, <string value>, <string value>] }

Я делаю это в следующем цикле:

for(Json::Value::ArrayIndex ic = 0; ic != yd.size(); ic++){
    Json::Value nn(Json::arrayValue);
    nn.append(yd[ic]["CHANNEL_ID"].asInt   ());
    nn.append(yd[ic]["tech"      ].asString());
    nn.append(yd[ic]["file"      ].asString());
    nn.append(yd[ic]["data"      ].asString());
    Json::Value mm;
    mm[yd[ic]["CHANNEL_ID"].asInt()] = nn;
    afnew.append(mm);
}

Здесь yd - этоJSON, с которого я прочитал, и я хочу добавить все к afnew. Узел CHANNEL_ID - это большое число (я могу даже рассмотреть здесь использование длинных без знака, но в любом случае). Вывод в порядке, но он добавляет много нулей перед фактическим массивом. По сути, если номер канала равен 500, он добавит 499 нулей перед ним. Если я преобразую номер канала в строку и использую его в качестве ключа для mm json, это сработает (также форсируя mm в Json::objectValue). Есть ли способ использовать здесь строки в качестве ключей или целые значения всегда будут интерпретироваться как векторные индексы?

Спасибо за любые советы и пожелания!

c.

РЕДАКТИРОВАТЬ: Вероятно, нет ..? http://pooh.poly.asu.edu/Ser321/Resources/doc/json-api-docs/jsoncpp-api-html/class_json_1_1_value.html

...