|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
фреймворк "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; |