Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Программа и интерфейс
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 12.02.2021, 13:25
Аватар для Seer
Seer Seer вне форума
Прохожий
 
Регистрация: 03.03.2008
Адрес: Тольятти
Сообщения: 1
Репутация: 10
По умолчанию фреймворк "Readers and Writers JSON Framework"

В 10.3 появился новый фреймворк для работы с JSON "Readers and Writers JSON Framework".
Не совсем понятно что там является собственно JSON объектом.
Допустим есть два класса словарь TGlossary = class(TObjectList) и статья TGlEntry = class(TComponent). Словарь собственно и содержит статьи как свои объекты.
У словаря есть метод procedure SaveToJSON(const AFileName: String);
который в цикле сохраняет статьи в формате JSON. У статьи есть метод function TGlEntry.GetEntryJSON: TStringBuilder; который выдает свойства статьи как JSON строку:
{
"Wrd": "аба",
"Sample": 1,
"Gender": 2,
"Soul": false,
"DeclType": 1,
"Plural": false,
"Suffix": "",
"Accent": true,
"RunVocal": false,
"Circle": false,
"Ring1": false,
"Ring2": false,
"Note": ""
}
в SaveToJSON словаря хочу получить некий JSON который содержит все статьи словаря, примерно так:
{
"DateCreation": "28.01.2021 12:26:03:173",
"Words": [
{
"Wrd": "аба",
"Sample": 1,
"Gender": 2,
"Soul": false,
"DeclType": 1,
"Plural": false,
"Suffix": "",
"Accent": true,
"RunVocal": false,
"Circle": false,
"Ring1": false,
"Ring2": false,
"Note": ""
},
{
"Wrd": "кааба",
"Sample": 1,
"Gender": 2,
"Soul": false,
"DeclType": 1,
"Plural": false,
"Suffix": "",
"Accent": false,
"RunVocal": false,
"Circle": false,
"Ring1": false,
"Ring2": false,
"Note": ""
},
{
"Wrd": "баба",
"Sample": 1,
"Gender": 2,
"Soul": false,
"DeclType": 1,
"Plural": false,
"Suffix": "",
"Accent": false,
"RunVocal": false,
"Circle": false,
"Ring1": false,
"Ring2": false,
"Note": ""
},
{
"Wrd": "баба",
"Sample": 1,
"Gender": 2,
"Soul": true,
"DeclType": 1,
"Plural": false,
"Suffix": "",
"Accent": false,
"RunVocal": false,
"Circle": false,
"Ring1": false,
"Ring2": false,
"Note": ""
}
],
"DateFinish": "28.01.2021 12:26:03:343"
}
Вот полный текст процедуры создания словаря:

Код:
procedure TGlossary.SaveToJSON(const AFileName: String);
var
 SB: TStringBuilder;
 fs: TFileStream;
 SW: TStreamWriter;
 JTW: TJsonTextWriter;
 JOB: TJSONObjectBuilder;
// EntryJB: TJSONObjectBuilder;
 i: Integer;
begin
 fs := TFileStream.Create(AFileName, fmCreate);
 SW := TStreamWriter.Create(fs); // есть конструктор с FileName
 JTW := TJsonTextWriter.Create(SW);
 JTW.Formatting := TJsonFormatting.None;
 JOB := TJSONObjectBuilder.Create(JTW);
 try
  with JOB.BeginObject do begin
   Add('DateCreation', FormatDateTime('dd.mm.yyyy hh:mm:ss:zzz', Now()));
   with BeginArray('Words') do
   begin
    for i:=0 to 5 { Count - 1 } do begin
     SB:=Items[i].EntryJSON;
{ Что тут написать?
     Add(???... 
     AddElements(???...
}
    end;
    EndArray;
   end;
   Add('DateFinish', FormatDateTime('dd.mm.yyyy hh:mm:ss:zzz', Now()));
   EndObject;
  end;
 finally
  FreeAndNil(JOB);
  FreeAndNil(JTW);
  FreeAndNil(SW);
  FreeAndNil(fs);
 end;
end;
Что я должен написать в цикле? Может Items[i].EntryJSON должна возвращать какой-то другой объект?
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:58.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter