Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / парсинг json delphi 6 / 11 сообщений из 11, страница 1 из 1
15.06.2017, 12:28:57
    #39472153
forward12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
парсинг json delphi 6
Всем привет. Поиском пользовался, видел несколько похожих топиков, особо помог топик по делфи 7 где рекомендовали использовать компонент Fundamentals.JSON.4.0.07.
Компонент работает на делфи 6 хорошо , но не хватает примеров и документации. Парсить джейсон получается на базе из процедуры по selftest, но дальше пришлось нагородить костылей. Хотелось бы избавится от костылей и пользоватся всеми возможностями компонента по парсингу данных. Пробовал брать примеры от других компонентов и по аналогии кодить но увы ступор. По сути у меня большинство джейсон обьектов это массивы в которых 5-10 полей.
Я использую код из примера
Код: pascal
1.
2.
3.
 P := TJSONParser.Create;
  A := P.ParseText(ss);
  X := TJSONObject(A);


а вот как раздробить этот TJSONObject на массив TJSONvalue, и дальше уже узнать размер этого массива и дальше уже поэлементно обращаться к записям.
...
Рейтинг: 0 / 0
15.06.2017, 12:32:30
    #39472159
Няшик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
парсинг json delphi 6
Можно поинтересоваться? А зачем пользоваться средой выпуска 2001 года ?
...
Рейтинг: 0 / 0
15.06.2017, 12:39:33
    #39472173
forward12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
парсинг json delphi 6
НяшикМожно поинтересоваться? А зачем пользоваться средой выпуска 2001 года ?
там уже готовый проект просто, нужно к нему добавить парсинг джейсона. Раньше там протокол обмена данных был на csv. Переписовать весь + старые компоненты на новые рельсы не целеесообразно.
...
Рейтинг: 0 / 0
16.06.2017, 12:25:46
    #39473055
Cobalt747
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
парсинг json delphi 6
forward12,

Так ведь есть же исходники!
...
Рейтинг: 0 / 0
16.06.2017, 16:33:25
    #39473271
forward12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
парсинг json delphi 6
Cobalt747forward12,

Так ведь есть же исходники!
есть код класса. Семплов нет. Функция селф тест она по созданию джейсон объекта и конвертации его в строку. И дальше простецкий парсинг. Но именно конвертации джейсон объекта в массий джейсонвельюе увы там нет.
...
Рейтинг: 0 / 0
16.06.2017, 16:49:48
    #39473290
чччД
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
парсинг json delphi 6
forward12...конвертации джейсон объекта в массий джейсонвельюе увы там нет.
Это что вообще такое?

Давай пример json скрипта.
...
Рейтинг: 0 / 0
16.06.2017, 17:30:14
    #39473334
чччД
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
парсинг json delphi 6
forward12,

Пример:
1. создание json объекта, содержащего массив других json объектов.
2. Разбор элементов массива на json - объекты

Код
Код: 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.
program Turbo;

{$APPTYPE CONSOLE}

uses
  SysUtils, flcJSON;

procedure DoIt;

var
  fJSO: TJSONObject;
  fJSO2: TJSONObject;
  fJSV: TJSONValue;

  fJSA: TJSONArray;
  i: Integer;

begin
  fJSO := TJSONObject.Create;
  try
    fJSA := TJSONArray.Create;

    // Заполнение массива объектами
    // первый объект
    fJSO2 := TJSONObject.Create;
    fJSO2.Add('int', TJSONInteger.Create(64));
    fJSA.Append(fJSO2);
    // второй объект
    fJSO2 := TJSONObject.Create;
    fJSO2.Add('str', TJSONString.Create('string'));
    fJSA.Append(fJSO2);

    fJSO.Add('array', fJSA);
    Writeln('Src json:');
    writeln(fJSO.GetJSONString([jboIndent])); // Что получилось

    // Разбор json на элементы массива
    writeln('~~~~~~~~~~'); //
    fJSA := fJSO.GetItemAsArray('array'); // Получение массива

    for i := 0 to fJSA.Count - 1 do begin
      fJSV := fJSA.Item[i];
      writeln('item ', i); //                       
      writeln(fJSV.GetJSONString([jboIndent])); // Элемент
    end;
  finally
    fJSO.Free;
  end;
end;
begin
  doIt;
  readln;
end.




Вывод:
Код: javascript
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.
Src json:
{
    "array" : [
        {
            "int" : 64
        }
        ,
        {
            "str" : "string"
        }

    ]

}

~~~~~~~~~~
item 0
{
    "int" : 64
}

item 1
{
    "str" : "string"
}



PS: Используется Fundamentals 5.00: https://github.com/fundamentalslib/fundamentals5
Рекомендованные правки: https://github.com/fundamentalslib/fundamentals5/issues/3 (см. также другие сообщения).

PPS: настоятельно рекомендую вместо json из состава fundamentals использовать SuperObjects (для твоей версии Delphi).
...
Рейтинг: 0 / 0
16.06.2017, 18:58:03
    #39473395
forward12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
парсинг json delphi 6
чччД,

спасибо, поковыряю этот код.
...
Рейтинг: 0 / 0
19.06.2017, 10:09:42
    #39473953
Exteris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
парсинг json delphi 6
чччДPPS: настоятельно рекомендую вместо json из состава fundamentals использовать SuperObjects (для твоей версии Delphi).
+1
На D7 отлично работает, освоил за пару часов.
...
Рейтинг: 0 / 0
19.06.2017, 11:40:47
    #39474027
defecator
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
парсинг json delphi 6
НяшикМожно поинтересоваться? А зачем пользоваться средой выпуска 2001 года ?
а почему нет?
...
Рейтинг: 0 / 0
19.06.2017, 12:45:58
    #39474077
энди
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
парсинг json delphi 6
До сих пор считаю D7 идеальной средой, но как не прискорбно надо двигаться вперед, так что продвинулся до XE7 :) Если уникод не уперся и библиотек никаких особо не надо то и сейчас на ней можно прекрасно разрабатывать.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / парсинг json delphi 6 / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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