Перейти к содержанию
Fire Monkey от А до Я
  • 0

Проверить существование TJSONObject


x11

Вопрос

Создаем TJSONObject
 

innerObject := TJSONObject(TJSONObject.ParseJSONValue('здесь неправильный json'));


Почему потом Assigned(innerObject) возвращает True?

Просто позже строка:

s := innerObject.ToString;


вызывает AV

Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Не делайте слепое приведение типов...
 

var JObj:TJSONObject;
begin
  JObj:=TJSONObject(TJSONObject.ParseJSONValue('0'));
  try
    try
      if assigned(JObj) then
        JObj.AddPair('Access','violation');
    except
      ShowMessage('Surprise MF!: '+JObj.ClassName);
    end;
  finally
    JObj.Free;
  end;
end;

ParseJSONValue возвращает TJSONValue, и необходима или проверка типа или использование только в рамках TJSONValue чего в большинстве случаев вполне достаточно.

Ссылка на комментарий
  • 0

В общем, да. Я изначально просто был не прав.

Вот так правильно:

var
  JSONValue: TJSONValue;
  innerObject: TJSONObject;
begin
...

....

      JSONValue := TJSONObject.ParseJSONValue(.....);

      if not (JSONValue is TJSONObject) then
        Continue
      else
        innerObject := JSONValue as TJSONObject;

 

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...