powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / масив json
58 сообщений из 58, показаны все 3 страниц
масив json
    #39822491
VladimirVVP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
мне нужно из этого ответа

{"success":"1","days":"3","products":[
{"1":{"id":"1","login":"33","password":"432","firstName":"23423","lastName":"234324","id_user":"1"},
"2":{"id":"2","login":"2222","password":"2333","firstName":"3333","lastName":"34234","id_user":"1"}}]}

получить firstName и lastName

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
    procedure DUAll;
var
JSONObject, JSONObjProp: TJSONObject;
JSONString: TJSONString;
JsonArray, JsonArrayCoord: TJSONArray;
i:integer;
begin
 try
 if http.Status() = 200 then
        begin
          frmAdmin.Memo1.Text:=http.responsetext;
          JSONObject:=TJSONObject(TJSONObject.ParseJSONValue(http.responsetext));
        if JSONObject <> nil then begin
            JSONString:=TJSONString(JSONObject.GetPairByName('success').JsonValue);
            if Pos('not session', JSONString.Value) > 0  then begin
            timerAu.Enabled:=False;
            frmAdmin.bAutorization.Caption:='Ошибка авторизации'; end else
            if Pos('1', JSONString.Value) > 0  then begin
                JSONString:=TJSONString(JSONObject.GetPairByName('days').JsonValue);
                frmAdmin.bDays.Caption:='Осталось '+JSONString.Value+' дней';
                JsonArray:=TJSONArray(JSONObject.GetPairByName('products').JsonValue);
                for i := 0 to JsonArray.Size-1  do begin
                    //  и тут я повис )))
                end;
                timerAu.Enabled:=False;
            end;
           end;
         end;
    except
      //frmAdmin.bAutorization.Caption:='соединение...';
    end;

end;
...
Рейтинг: 0 / 0
масив json
    #39822501
Gerasimenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladimirVVP,

самое простое, наверное, TStringList с разделителем ":"
...
Рейтинг: 0 / 0
масив json
    #39822547
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladimirVVP,

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
procedure Parse(AText: string; out ADays: Integer);
var
  I: Integer;
  LJson: TJSONObject;
  LProductsNode: TJSONValue;
  LItemNode: TJSONValue;
  LDataNode: TJSONValue;
begin
  ADays := -1;
  LJson := TJSONObject.ParseJSONValue(AText) as TJSONObject;
  if Assigned(LJson) then
  begin
    try
      if LJson.Count > 0 then
      begin
        if TJSONString(LJson.Values['success']).Value = '1' then
        begin
          ADays := StrToInt(TJSONString(LJson.Values['days']).Value);
          LProductsNode := LJson.Values['products'];
          if Assigned(LProductsNode) then
          begin
            with TJSONArray(LProductsNode) do
            begin
              if Count > 0 then
                for I := 0 to Count - 1 do
                begin
                  LItemNode := Items[I];
                  if Assigned(LItemNode) then
                  begin
                    with TJSONObject(LItemNode) do
                    begin
                      LDataNode := Values[IntToStr(I + 1)];
                      if Assigned(LDataNode) then
                      begin
                        with TJSONObject(LDataNode) do
                        begin
                          // данные i-го элемента, получаемые в цикле:
                          // firstName := TJSONString(Values['firstName']).Value;
                          // lastName:= TJSONString(Values['lastName']).Value;
                        end;
                      end;
                    end;
                  end;
                end;
            end;
          end;
        end;
      end;
    finally
      LJson.DisposeOf;
    end;
  end;
end;
...
Рейтинг: 0 / 0
масив json
    #39823144
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И что заставляет людей так составлять json-массивы? :(
Еще чуднее пример:
{1:{...}, 2;{...}, 5:{...}, 10:{...} }
Парсите наздоровье!
...
Рейтинг: 0 / 0
масив json
    #39823155
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladimirVVP,

в 10-ке десериализатор есть, ищи в папке REST, по слову reflect
...
Рейтинг: 0 / 0
масив json
    #39823186
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmSerЕще чуднее пример:
{1:{...}, 2;{...}, 5:{...}, 10:{...} }
Парсите наздоровье!
чем он чуднее? тем что невалиден?
...
Рейтинг: 0 / 0
масив json
    #39823248
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)VladimirVVP,

в 10-ке десериализатор есть, ищи в папке REST, по слову reflect
сериализация хороша, когда структура данных в json жестко зафиксирована. Удаление хотя бы одного поля в структуре сломает парсинг (например в новой версии структуру изменили и новая версия приложения ее поддерживает, а вот предыдущие версии перестают работать), поэтому ручками парсить надежнее

Дегтярев ЕвгенийDmSerЕще чуднее пример:
{1:{...}, 2;{...}, 5:{...}, 10:{...} }
Парсите наздоровье!
чем он чуднее? тем что невалиден?
лично я бы предпочел, чтобы массив хранился в виде "products":[{"index":"1",..},{"index":"2",..},{"index":"10",..}]
...
Рейтинг: 0 / 0
масив json
    #39823295
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2kealon(Ruslan)VladimirVVP,

в 10-ке десериализатор есть, ищи в папке REST, по слову reflect
сериализация хороша, когда структура данных в json жестко зафиксирована. Удаление хотя бы одного поля в структуре сломает парсинг (например в новой версии структуру изменили и новая версия приложения ее поддерживает, а вот предыдущие версии перестают работать), поэтому ручками парсить надежнее вот с новой версией структуру поменяли а у тебя всё работает ибо ручками написал :-)
ога, как же ..., в реале у тебя куча гумнокода который непонятно как и где исправлять
валидацию ожидание-реальность просто нужно делать хотя бы в дебуге
...
Рейтинг: 0 / 0
масив json
    #39823312
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladimirVVP,

какая-то у тебя глупая структура:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
{
 "success": "1",
 "days": "3",
 "products": [
  {
   "2": {
    "firstName": "3333",
    "login": "2222",
    "id_user": "1",
    "lastName": "34234",
    "id": "2",
    "password": "2333"
   },
   "1": {
    "firstName": "23423",
    "login": "33",
    "id_user": "1",
    "lastName": "234324",
    "id": "1",
    "password": "432"
   }
  }]
}


"products" - это массив с одним анонимным "{}" объектом, в котором - два объекта, странным образом именованные "2" и "1".

Ну да ладно.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
const
  cSrc = ''
    + '{'
    + ' "success": "1",'
    + ' "days": "3",'
    + ' "products": ['
    + '  {'
    + '   "2": {'
    + '    "firstName": "3333",'
    + '    "login": "2222",'
    + '    "id_user": "1",'
    + '    "lastName": "34234",'
    + '    "id": "2",'
    + '    "password": "2333"'
    + '   },'
    + '   "1": {'
    + '    "firstName": "23423",'
    + '    "login": "33",'
    + '    "id_user": "1",'
    + '    "lastName": "234324",'
    + '    "id": "1",'
    + '    "password": "432"'
    + '   }'
    + '  }]'
    + '}'
  ;

var
  fSO: ISuperObject;
  fItem: ISuperObject;
  fIter: TSuperObjectIter;
  i: Integer;
  fSL: TStringList;

begin
  fSO := SO(cSrc);
  fSO := fSO.A['products'][0];
  fSL := TStringList.Create;
  try
    if ObjectFindFirst(fSO, fIter) then begin
      repeat
        fItem := fIter.val;
        fSL.Add(Format('"%s" firstName="%s" lastName="%s"',
                [fIter.key, fItem.S['firstName'], fItem.S['lastName']]))
      until not ObjectFindNext(fIter);
    end;
    ObjectFindClose(fIter);
    ShowMessage(fSL.Text);
  finally
    fSL.Free
  end;
end;


Ах, да.
Код: pascal
1.
2.
uses
  superobject;
...
Рейтинг: 0 / 0
масив json
    #39823386
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan),

когда парсинг пишешь ручками, можно делать какие угодно динамические проверки и динамическую обработку на поля/значения/ и т.д., парсинг отработает. При сериализации это мягко говоря недоступно :-) и это опыт именно реального использования
...
Рейтинг: 0 / 0
масив json
    #39823399
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёё,

исходники SuperObject последний раз обновлялись 3 года назад, X-SuperObject 2 года назад. Будут ли они обновляться дальше для совместимости с новыми версиями делфи? Вопрос открытый.
Соответственно большие риски при их использовании, при этом стандартный из коробки system.json будет работать всегда, включая поддержку android и ios
...
Рейтинг: 0 / 0
масив json
    #39823416
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2,

нормально там всё с ним, от версий код зависит минимально. я вот даже на fpc утащил:

FPC/Delphi Superobject
...
Рейтинг: 0 / 0
масив json
    #39823424
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaonasutp2,

нормально там всё с ним, от версий код зависит минимально. я вот даже на fpc утащил:

FPC/Delphi Superobject
Фсё плохо. Тесты последний раз обновлялись 10 лет назад...
...
Рейтинг: 0 / 0
масив json
    #39823454
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёёТесты последний раз обновлялись 10 лет назад... Это хороший знак, не? ;)

Хотя мне больше x-superobject нравится.
...
Рейтинг: 0 / 0
масив json
    #39823459
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreatёёёёёТесты последний раз обновлялись 10 лет назад... Это хороший знак, не? ;)

Хотя мне больше x-superobject нравится.
Мне тоже. Но я довольно часто использую старые дельфи.
...
Рейтинг: 0 / 0
масив json
    #39823547
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreatёёёёёТесты последний раз обновлялись 10 лет назад... Это хороший знак, не? ;)
это плохой знак. говорит либо о том, что либо тесты не обновляются из за отсутствия развития основной библиотеки, либо библиотека развивается, но актуальными тестами не покрываются. Что на порядок хуже первого случая.
...
Рейтинг: 0 / 0
масив json
    #39823625
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2kealon(Ruslan),

когда парсинг пишешь ручками, можно делать какие угодно динамические проверки и динамическую обработку на поля/значения/ и т.д., парсинг отработает. При сериализации это мягко говоря недоступно :-) и это опыт именно реального использования
назад сериализовать и сравнить два json-а пипец RocketScience
...
Рейтинг: 0 / 0
масив json
    #39823661
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2,

а что там можно развивать?
Разве json стандарт развивается?
Ошибки выгребли - что еще нужно?
...
Рейтинг: 0 / 0
масив json
    #39823678
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёё,

навскидку - в X-SuperObject почему то используется Indy, что сразу несет проблемы при использовании на android 6+. Автору либы как минимум нужно перейти на модули из коробки.
Для тех, кто пишет на древних делфи, может и пойдет, а вот на Rio всё это легаси в топку.
...
Рейтинг: 0 / 0
масив json
    #39823691
shonli95
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
масив json
    #39823708
Фотография Dmitry Arefiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladimirVVPполучить firstName и lastName
Первую попавшуюся пару, или имя из первого элемента массива и имя из последнего элемента массива, или ... ?
...
Рейтинг: 0 / 0
масив json
    #39823721
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дегтярев ЕвгенийDmSerЕще чуднее пример:
{1:{...}, 2;{...}, 5:{...}, 10:{...} }
Парсите наздоровье!
чем он чуднее? тем что невалиден?

Я сразу не увидел отформатированный json от ТС, теперь вижу, что у него чуднее :)
...
Рейтинг: 0 / 0
масив json
    #39823723
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2ёёёёё,

навскидку - в X-SuperObject почему то используется Indy, что сразу несет проблемы при использовании на android 6+. Автору либы как минимум нужно перейти на модули из коробки.
Для тех, кто пишет на древних делфи, может и пойдет, а вот на Rio всё это легаси в топку.

Люто.
...
Рейтинг: 0 / 0
масив json
    #39823729
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2навскидку - в X-SuperObject почему то используется Indy, что сразу несет проблемы при использовании на android 6+.В плане "проблемы"?

TIdBytes или Base64 от TIdEncoderMIME на анроиде внезапно перестанут работать?

Там из Indy болше ничего нет.
...
Рейтинг: 0 / 0
масив json
    #39823732
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreatasutp2навскидку - в X-SuperObject почему то используется Indy, что сразу несет проблемы при использовании на android 6+.В плане "проблемы"?

TIdBytes или Base64 от TIdEncoderMIME на анроиде внезапно перестанут работать?

Там из Indy болше ничего нет.

Да о чем тут спорить, просто сравнить объемы говнокода 21901959 и

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
const
  cSrc = ''
    + '{'
    + ' "success": "1",'
    + ' "days": "3",'
    + ' "products": ['
    + '  {'
    + '   "2": {'
    + '    "firstName": "3333",'
    + '    "login": "2222",'
    + '    "id_user": "1",'
    + '    "lastName": "34234",'
    + '    "id": "2",'
    + '    "password": "2333"'
    + '   },'
    + '   "1": {'
    + '    "firstName": "23423",'
    + '    "login": "33",'
    + '    "id_user": "1",'
    + '    "lastName": "234324",'
    + '    "id": "1",'
    + '    "password": "432"'
    + '   }'
    + '  }]'
    + '}'
    ;

var
  fSO: ISuperObject;
  fIter: TSuperObjectIter;
begin
  fSO := SO(cSrc).A['products'][0];
  if ObjectFindFirst(fSO, fIter) then begin
    repeat
      ShowMessageFmt('"%s" firstName="%s" lastName="%s"',
        [fIter.key, fIter.val.S['firstName'], fIter.val.S['lastName']])
    until not ObjectFindNext(fIter);
  end;
end;


...
Рейтинг: 0 / 0
масив json
    #39823734
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёёДа о чем тут спорить, просто сравнить объемы говнокода 21901959 и
<..>Причем тут SuperObject и System.JSON?
Мы то про X-SuperObject перетираем.


Который еще удобней чем простой SuperObject.
...
Рейтинг: 0 / 0
масив json
    #39823739
Фотография Dmitry Arefiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёёДа о чем тут спорить, просто сравнить объемы говнокода
Но его ведь можно на чем угодно написать
...
Рейтинг: 0 / 0
масив json
    #39823743
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry Arefiev,

Можно, но на System.JSON мало говнокода не написать не выйдет. ;)
...
Рейтинг: 0 / 0
масив json
    #39823744
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat...Который еще удобней...
Ну так код давай. :)

Dmitry Arefievёёёёё...объемы говнокода
Но его ведь можно на чем угодно написать
Это да, мастерство не пропьёшь.
...
Рейтинг: 0 / 0
масив json
    #39823745
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
const
  cSrc = ''
    + '{'
    + ' "success": "1",'
    + ' "days": "3",'
    + ' "products": ['
    + '  {'
    + '   "2": {'
    + '    "firstName": "3333",'
    + '    "login": "2222",'
    + '    "id_user": "1",'
    + '    "lastName": "34234",'
    + '    "id": "2",'
    + '    "password": "2333"'
    + '   },'
    + '   "1": {'
    + '    "firstName": "23423",'
    + '    "login": "33",'
    + '    "id_user": "1",'
    + '    "lastName": "234324",'
    + '    "id": "1",'
    + '    "password": "432"'
    + '   }'
    + '  }]'
    + '}'
    ;

var
  fSO: ISuperObject;
  fIter: TSuperObjectIter;
begin
  fSO := SO(cSrc).A['products'][0];
  if ObjectFindFirst(fSO, fIter) then begin
    repeat
      ShowMessageFmt('"%s" firstName="%s" lastName="%s"',
        [fIter.key, fIter.val.S['firstName'], fIter.val.S['lastName']])
    until not ObjectFindNext(fIter);
  end;
end;



Красиво!
...
Рейтинг: 0 / 0
масив json
    #39823746
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
увы, но встроенная либа в использовании никогда красоты кода (X)SuperObject'ов не даст. То, что (X)SuperObject делает изящно, во встроенной выглядит как правило ужасно. Взяли бы вот лучше допилили (X)SuperObject, кому чего не хватает - тестов, или инди лишняя. к слову - инди вполне коробочная либа. другое дело, что зависимость чужеродная совсем, тут согласен.
...
Рейтинг: 0 / 0
масив json
    #39823749
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
к слову - indy отключаемое в XSuperObject: SP_STREAM
...
Рейтинг: 0 / 0
масив json
    #39823751
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёёНу так код давай. :)

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
const
  cSrc = ''
    + '{'
    + ' "success": "1",'
    + ' "days": "3",'
    + ' "products": ['
    + '  {'
    + '   "2": {'
    + '    "firstName": "3333",'
    + '    "login": "2222",'
    + '    "id_user": "1",'
    + '    "lastName": "34234",'
    + '    "id": "2",'
    + '    "password": "2333"'
    + '   },'
    + '   "1": {'
    + '    "firstName": "23423",'
    + '    "login": "33",'
    + '    "id_user": "1",'
    + '    "lastName": "234324",'
    + '    "id": "1",'
    + '    "password": "432"'
    + '   }'
    + '  }]'
    + '}'
    ;

var
  fSO   : ISuperObject;
  Item  : IMember;
begin
  fSO := SO(cSrc)['products[0]'].AsObject;
  for Item in fSO do begin
    ShowMessageFmt('"%s" firstName="%s" lastName="%s"',
      [Item.Name, Item.AsObject.S['firstName'], Item.AsObject.S['lastName']])
  end;
end;
...
Рейтинг: 0 / 0
масив json
    #39823756
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreatёёёёёНу так код давай. :)

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
const
  cSrc =...
var
  Item  : IMember;
begin
  for Item in SO(cSrc)['products[0]'].AsObject do
    ShowMessageFmt('"%s" firstName="%s" lastName="%s"',
      [Item.Name, Item.AsObject.S['firstName'], Item.AsObject.S['lastName']])
end;
...
Рейтинг: 0 / 0
масив json
    #39823757
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёё,

Ты еще переносы строк убей.
...
Рейтинг: 0 / 0
масив json
    #39823758
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как-то так:
Код: pascal
1.
2.
3.
4.
5.
const
  cSrc =...
begin
  for var Item in SO(cSrc)['products[0]'].AsObject do ShowMessageFmt('"%s" firstName="%s" lastName="%s"', [Item.Name, Item.AsObject.S['firstName'], Item.AsObject.S['lastName']])
end;
...
Рейтинг: 0 / 0
масив json
    #39823759
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Слабо короче? ;)
...
Рейтинг: 0 / 0
масив json
    #39823761
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот он какой Великий и могучий!
...
Рейтинг: 0 / 0
масив json
    #39823763
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в редакторе кода при наборе "Item." варианты отображаются?
...
Рейтинг: 0 / 0
масив json
    #39823765
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmSer,
...
Рейтинг: 0 / 0
масив json
    #39823766
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кучка легаси говнопрограммеров извращается, что короче напишет, аааа)))))
...
Рейтинг: 0 / 0
масив json
    #39823767
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А с for var Item?
...
Рейтинг: 0 / 0
масив json
    #39823768
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmSer,

У меня 10.3 на этой машине не установлен.
...
Рейтинг: 0 / 0
масив json
    #39823770
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2кучка легаси говнопрограммеров извращается, что короче напишет, аааа)))))
Вот не надо вот тут вот!

У меня большая часть проектов - новоделы!
...
Рейтинг: 0 / 0
масив json
    #39823774
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmSerА с for var Item?
Да.

Код: pascal
1.
2.
  for var Item in SO(cSrc)['products[0]'].AsObject do
    Writeln(Item.Name:3, ' firstName = ', Item.AsObject.S['firstName']:10, ' lastName = ', Item.AsObject.S['lastName']:10);
...
Рейтинг: 0 / 0
масив json
    #39823835
Фотография Dmitry Arefiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
10.3.2 System.JSON. На 30-40% быстрее SO.
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
var
  LVal: TJSONValue;
  LPair: TJSONPair;
begin
  LVal := TJSONObject.ParseJSONValue(cSrc);
  try
    for LPair in LVal.P['products[0]'] as TJSONObject do
      ShowMessageFmt('"%s" firstName="%s" lastName="%s"',
        [LPair.JsonString.Value, LPair.JsonValue.P['firstName'].Value, LPair.JsonValue.P['lastName'].Value]);
  finally
    LVal.Free;
  end;
end;
...
Рейтинг: 0 / 0
масив json
    #39823864
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2кучка легаси говнопрограммеров извращается, что короче напишет, аааа)))))вы удивительно непоследовательны, вы же сами это предложили :-)
...
Рейтинг: 0 / 0
масив json
    #39824084
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)asutp2кучка легаси говнопрограммеров извращается, что короче напишет, аааа)))))вы удивительно непоследовательны, вы же сами это предложили :-)ммм, я вроде наоборот призвал отказаться от (x)superobject, так как они легаси в чистом виде, и вместо их использовать system.json? ))))
...
Рейтинг: 0 / 0
масив json
    #39824219
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2kealon(Ruslan)пропущено...
вы удивительно непоследовательны, вы же сами это предложили :-)ммм, я вроде наоборот призвал отказаться от (x)superobject, так как они легаси в чистом виде, и вместо их использовать system.json? ))))В случае использования сериализации, system.json или ещё что-то ещё, не особо важно - хоть самописный велосипед. Будет тормозить не нравится одно, можно переписать, это довольно обозримый код и один.
Со стандартными классами и полной валидацией я уложился в 170 строчек модуля, который спокойно можно использовать в любом другом проекте.

Вы же сказали, что лучше ручками всё - 21903168 .п1, топик стартанул и все соревнуются как "лучше и красивее наложить побольше".
Так чему вы удивляетесь?
...
Рейтинг: 0 / 0
масив json
    #39824225
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan),

осталось сравнить скорострельность обработки json-а кодом "ручками" и кодом "красивее/легче", с разным объемом элементов в дереве )))
...
Рейтинг: 0 / 0
масив json
    #39824227
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если хотите именно "побыстрей" то ручками все одно быстрей всего будет.
...
Рейтинг: 0 / 0
масив json
    #39824230
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2kealon(Ruslan),

осталось сравнить скорострельность обработки json-а кодом "ручками" и кодом "красивее/легче", с разным объемом элементов в дереве )))В этом можно соревноваться бесконечно, на одной структуре, потом на другой, потом на третьей.

Только смысл какой? Скорость работы для большинства программ, не особо критичная вещь.
...
Рейтинг: 0 / 0
масив json
    #39824233
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan),

я последние пару лет пишу для мобилок, у которых обмен с сервером идет через json. Каждая лишняя секунда на парсинг как ножом по сердцу! :-)
...
Рейтинг: 0 / 0
масив json
    #39824237
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreatЕсли хотите именно "побыстрей" то ручками все одно быстрей всего будет.ага, в кульминации лидером будет Pos('.....', Text), Exit(GetNextElement)
...
Рейтинг: 0 / 0
масив json
    #39824238
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2лишняя секунда на парсингВы там на мобилку передаете сотни мегабайт JSON-а? ;)
...
Рейтинг: 0 / 0
масив json
    #39824247
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat,

окстись, окоянный! больше 1 мб не припомню, обычно от килобайта до пары десятков кб
тут вопрос в другом, процы на мобилках слабее, чем на компах
...
Рейтинг: 0 / 0
масив json
    #39824249
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2kealon(Ruslan),

я последние пару лет пишу для мобилок, у которых обмен с сервером идет через json. Каждая лишняя секунда на парсинг как ножом по сердцу! :-)Могу сказать однозначно, что специализированный десериализатор SAX-типа уделает все ваши поделки и по скорости, и по памяти как тузик грелку

Если уж постоянно заморачиваетесь, то можно разок помаяться и сесть написать - это не RocketScience
...
Рейтинг: 0 / 0
масив json
    #39824252
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2rgreat,

окстись, окоянный! больше 1 мб не припомню, обычно от килобайта до пары десятков кб
тут вопрос в другом, процы на мобилках слабее, чем на компахВот и я думаю, чего уж там парсить-то?
Если несколько десятков килобайт секундами парсится - значит где-то что-то не так.
...
Рейтинг: 0 / 0
58 сообщений из 58, показаны все 3 страниц
Форумы / Delphi [игнор отключен] [закрыт для гостей] / масив json
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]