Обновить TJSONArray - PullRequest
       28

Обновить TJSONArray

0 голосов
/ 05 декабря 2018

Как правильно обновить значение JSON?Вот что я попробовал, но без удачи:

TJSONArray *Data;
Data = (TJSONArray*) TJSONObject::ParseJSONValue(TEncoding::ASCII->GetBytes(json),0);
TJSONObject *obj = (TJSONObject*) Data->Get(0);
TJSONArray *arr = (TJSONArray*) obj->Get("tokens");
arr = (TJSONArray*) TJSONObject::ParseJSONValue(TEncoding::ASCII->GetBytes(arrjson),0);

Данные:

[{"source":"aaaa","cluster":"1","tokens":[{},{}]}, {"source":"bbbb","cluster":"2","tokens":[{},{}]}] 

1 Ответ

0 голосов
/ 05 декабря 2018

К сожалению, TJSONArray не изначально позволяет заменять существующие элементы новыми значениями (почему? Кто знает).Все, что вы можете сделать, это добавить и удалить элементы, а также элементы ENUMERATE.

Поскольку в вашем массиве содержится TJSONObject экземпляров, для замены такого элемента новым объектом вам потребуется:

  1. удалить все элементы из массива, включая и после индекса требуемого элемента, затем добавить новый объект требуемого типа, а затем повторно добавить удаленные элементы (в их предыдущем порядке).

  2. создайте совершенно новый TJSONArray, а затем добавьте к нему объекты по мере необходимости, копируя значения из предыдущего TJSONArray, где это необходимо.Затем вы можете получить TJSONPair для поля tokens и установить новый TJSONArray в качестве JsonValue.

. Если вам это не нравится, ищитесторонняя библиотека JSON, которая поддерживает интересующие вас возможности редактирования.

...