У меня есть код 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