Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > SuperObject типы


Автор: Hiori 5.5.2025, 08:18
Доброго времени суток.

Вопрос простой, но, видимо, я серьёзно туплю. Есть некий класс, который в сущности обрабатывает файл json. Работа у меня реализована через superobject. Запись значения сделана примерно так:
Код

procedure Tляляля.SetValue( AName: string; Value: Variant );
begin
   case VarType( Value ) of
      varInteger: json.I[ AName ] := Integer( Value );
      varBoolean: json.B[ AName ] := Boolean( Value );
      varString:  json.S[ AName ] := string( Value );
      ляляляля
      else ;
   end;
end;


Собственно вопрос, как узнать какого типа поле в json?

Автор: Hiori 7.5.2025, 09:26
Мало ли кому-то пригодится...

Оказывается любое поле json в superobject можно определить как объект, то есть, если в оригинальном json поле определено как
"AnyObject": 10
то, несмотря на то, что поле объективно типа int, в коде можно использовать конструкцию json.O["AnyObject"]

Таким образом, этот вариант можно использовать для определения типа. Конструкция
json.O["AnyObject"].IsType( stInt )
вернёт true для указанного примера.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)