JSON_Spirit: отображение value.type() обратно на тип?
Вы можете отобразить тип значения следующим образом:
cout << val.type() << end;
и это напечатать номер.
Как я могу сопоставить этот номер с реальным типом?
кроме заглядывания в заголовочный файл, конечно, который раскрывает все...
enum Value_type {
obj_type,array_type,str_type,bool_type,int_type,real_type,null_type
};
2 ответа
Решение
Нет, это кажется каноническим способом:
switch(v.type()) {
case obj_type: pp_obj(v, lev+1); break;
case array_type: pp_array(v, lev+1); break;
case str_type: pp<string>(v, lev+1); break;
case bool_type: pp<bool>(v, lev+1); break;
case int_type: pp<int>(v, lev+1); break;
case real_type: pp<double>(v, lev+1); break;
case null_type: pp_null(v, lev+1); break;
}
Значение val; читать (есть, val); Объект o = val.get_obj ();
Затем создайте пару, предполагая, что это тип 0. Pair pair = o[1];
где 1 - повторное значение. Это заняло у меня целую вечность, поэтому я пытаюсь сэкономить время тех, кто хочет это выяснить позже. используйте sizeof(o)/sizeof(int) для итерации, наряду с ++ i вместо i ++.