JSON и удаление объектов

GrigoriyFomin
Дата: 25.09.2019 00:25:35
Перечитал немало форумов и статей, но нигде не найду четкого указания как работать с созданными объектами JSON. Когда их удалять и надо ли удалять?
    var JSON: TJSONObject;
    JSON:=TJSONObject.Create;
    json.AddPair('name',GetFVal('modname',true))
    .AddPair('categs',TJSONArray.Create.Add(GetFVal('gr1',true)).Add(GetFVal('gr2',true)).Add(GetFVal('gr3',true)));

Я так понимаю, после каждого Create должен быть свой FreeAndNil? Тогда зачем такая избыточность? Создать просто json текст - объяви переменную, создай ее, присвой ей нужные значения, выгрузи строку и удали объект. Или я что-то не понимаю?
YuRock
Дата: 25.09.2019 00:53:46
GrigoriyFomin
Перечитал немало форумов и статей, но нигде не найду четкого указания как работать с созданными объектами JSON. Когда их удалять и надо ли удалять?
    var JSON: TJSONObject;
    JSON:=TJSONObject.Create;
    json.AddPair('name',GetFVal('modname',true))
    .AddPair('categs',TJSONArray.Create.Add(GetFVal('gr1',true)).Add(GetFVal('gr2',true)).Add(GetFVal('gr3',true)));


Я так понимаю, после каждого Create должен быть свой FreeAndNil? Тогда зачем такая избыточность? Создать просто json текст - объяви переменную, создай ее, присвой ей нужные значения, выгрузи строку и удали объект. Или я что-то не понимаю?
Вряд ли. Зависит от реализации, конечно, посмотри исходники.
Обычно родитель удаляет всех своих детей, потому достаточно вызвать деструктор корневого.
ёёёёё
Дата: 25.09.2019 07:18:23
GrigoriyFomin
Перечитал немало форумов и статей, но нигде не найду четкого указания как работать с созданными объектами JSON. Когда их удалять и надо ли удалять?
    var JSON: TJSONObject;
    JSON:=TJSONObject.Create;
    json.AddPair('name',GetFVal('modname',true))
    .AddPair('categs',TJSONArray.Create.Add(GetFVal('gr1',true)).Add(GetFVal('gr2',true)).Add(GetFVal('gr3',true)));

Я так понимаю, после каждого Create должен быть свой FreeAndNil? Тогда зачем такая избыточность? Создать просто json текст - объяви переменную, создай ее, присвой ей нужные значения, выгрузи строку и удали объект. Или я что-то не понимаю?

Конечно, можно сразу строку выгружать.
Если ты ее правильно сформировал - тоогда никаких проблем.
Dmitry Arefiev
Дата: 25.09.2019 08:05:40
GrigoriyFomin
Я так понимаю, после каждого Create должен быть свой FreeAndNil?

Удалять надо корневой объект, в твоем случае - JSON.
Чаще всего для локальных переменных достаточно Free.