Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 JSON - получить имя параметра  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12558
кусок JSON объекта:
Картинка с другого сайта.

Нужно пройтись циклом по параметру (объекту) searchParams и определить:
- является ли подчиненный объект простым значением;
- найти имя значения;

Не понимаю, почему разработчики не реализовали какой-нибудь метод или свойство, типа Name?

Delphi Tokyo, использую стандартный модуль System.JSON.

Вот мой код:
    for I := 0 to Pred(jSearchParams.Count) do
    begin
      if jSearchParams.Pairs[i].JsonValue is TJSONValue then
      begin
        sName := jSearchParams.Pairs[i].что здесь;
        sVal  := jSearchParams.Pairs[i].JsonValue.Value;


почему то условие "if jSearchParams.Pairs[i].JsonValue is TJSONValue then" пропускает внутрь себя owner, хотя видно, что owner - это массив, а не Value. Или я чего-то не понял?
Спасибо.
5 дек 18, 15:43    [21754560]     Ответить | Цитировать Сообщить модератору
 Re: JSON - получить имя параметра  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12558
такс... с именем параметра разобрался (что-то похожее нашел здесь http://www.webdelphi.ru/2011/10/rabota-s-json-v-delphi-2010-xe2/ )
sName := jSearchParams.Pairs[i].JsonString.Value;


это ж надо такое придуматьКартинка с другого сайта.

осталось понять, как проверить тип объекта, чтобы "вылавливать" только простые значения
5 дек 18, 15:48    [21754575]     Ответить | Цитировать Сообщить модератору
 Re: JSON - получить имя параметра  [new]
rgreat
Member

Откуда:
Сообщений: 4575
https://github.com/onryldz/x-superobject
5 дек 18, 16:05    [21754608]     Ответить | Цитировать Сообщить модератору
 Re: JSON - получить имя параметра  [new]
rgreat
Member

Откуда:
Сообщений: 4575
В разы удобней и понятней.
5 дек 18, 16:05    [21754609]     Ответить | Цитировать Сообщить модератору
 Re: JSON - получить имя параметра  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 3934
эта лучше
https://github.com/ahausladen/JsonDataObjects
5 дек 18, 16:29    [21754640]     Ответить | Цитировать Сообщить модератору
 Re: JSON - получить имя параметра  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12558
Я же не просил советов, что лучше использовать.
5 дек 18, 16:31    [21754647]     Ответить | Цитировать Сообщить модератору
 Re: JSON - получить имя параметра  [new]
rgreat
Member

Откуда:
Сообщений: 4575
Чем?
5 дек 18, 16:33    [21754654]     Ответить | Цитировать Сообщить модератору
 Re: JSON - получить имя параметра  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12558
rgreat, может, вам сделать отдельную тему для флуда Картинка с другого сайта. ?
5 дек 18, 16:39    [21754667]     Ответить | Цитировать Сообщить модератору
 Re: JSON - получить имя параметра  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 10638
X11
осталось понять, как проверить тип объекта, чтобы "вылавливать" только простые значения
if (LObj is TJSONString) or (LObj is TJSONBool) then
5 дек 18, 16:43    [21754670]     Ответить | Цитировать Сообщить модератору
 Re: JSON - получить имя параметра  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12558
_Vasilisk_, и перечислять все возможные типы?
5 дек 18, 16:47    [21754676]     Ответить | Цитировать Сообщить модератору
 Re: JSON - получить имя параметра  [new]
rgreat
Member

Откуда:
Сообщений: 4575
X11,

Это публичный форум.
5 дек 18, 16:47    [21754678]     Ответить | Цитировать Сообщить модератору
 Re: JSON - получить имя параметра  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 3934
X11
почему то условие "if jSearchParams.Pairs[i].JsonValue is TJSONValue then" пропускает внутрь себя owner, хотя видно, что owner - это массив, а не Value. Или я чего-то не понял?
Спасибо.

Потому что TJSONValue -- это общий предок для всех значимых типов (т.е. TJSONArray будет являться TJSONValue). Надо проверять на конкретные типы типа TJSONString

К сообщению приложен файл. Размер - 6Kb
5 дек 18, 16:47    [21754679]     Ответить | Цитировать Сообщить модератору
 Re: JSON - получить имя параметра  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 10638
X11
и перечислять все возможные типы?
Все остальные - наследники этих. Ну можешь еще TJSONNull добавить
5 дек 18, 16:57    [21754701]     Ответить | Цитировать Сообщить модератору
 Re: JSON - получить имя параметра  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12558
я сделал if not TJSONArray
5 дек 18, 17:02    [21754709]     Ответить | Цитировать Сообщить модератору
 Re: JSON - получить имя параметра  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 10638
X11
я сделал if not TJSONArray
TJsonObject забыл
5 дек 18, 17:22    [21754734]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить