Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > Delphi > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 27.03.2015, 17:11   #1
Dozent
Форумчанин
 
Регистрация: 21.05.2008
Сообщений: 495
По умолчанию JSON положить объект в объект

Добрый день, никогда не работал с JSON. Начинаю по тихому разбираться!

Мне нужно положить объект в объект. Нашёл такой пример.

Код:
{добавляем в объект ещё один объект}
  InnerObject:=TJSONObject.Create;
  InnerObject.AddPair('Inner_StringPair','Hello World!');
  JSONObject.AddPair(TJSONPair.Create('InnerObject',InnerObject));
Пробую у себя

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  jsObject, jsExObject: TJSONObject;
begin
  jsObject := TJSONObject.Create();
  jsExObject := TJSONObject.Create();
  try
    jsObject.AddPair('id', Format('%s', ['123']));
    //
    jsExObject.AddPair('scenid', TJSONNumber.Create(128));
    jsExObject.AddPair('user', TJSONNumber.Create(125));
    //
    jsObject.AddPair('exercise', jsExObject);
  finally
    FreeAndNil(jsObject);
    FreeAndNil(jsExObject);
  end;
  Memo1.Text := jsObject.ToString;
end;
выходит ошибка "Invalid point operation"

Подскажите что не так?

Нужна такая структура:

{
"id": "GUID клиента",
"exercise":
{
"scenid": 26,
"user": 1
}
}
Dozent вне форума Ответить с цитированием
Старый 27.03.2015, 17:38   #2
lomastr_
Форумчанин
 
Регистрация: 16.01.2015
Сообщений: 672
По умолчанию

а почему не как в примере?
lomastr_ вне форума Ответить с цитированием
Старый 30.03.2015, 11:48   #3
Dozent
Форумчанин
 
Регистрация: 21.05.2008
Сообщений: 495
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  jsObject, jsExObject: TJSONObject;
begin
  jsObject := TJSONObject.Create();
  jsExObject := TJSONObject.Create();
  try
    jsObject.AddPair('id', Format('%s', ['123']));
    //
    // jsExObject.AddPair('scenid', TJSONNumber.Create(128));
    // jsExObject.AddPair('user', TJSONNumber.Create(125));
    jsExObject.AddPair('user', '321');
    //
    jsObject.AddPair(TJSONPair.Create('exercise', jsExObject));
  finally
    FreeAndNil(jsObject);
    FreeAndNil(jsExObject);
  end;
  Memo1.Text := jsObject.ToString;
end;
Да та же ошибка!
Dozent вне форума Ответить с цитированием
Старый 30.03.2015, 12:25   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,061
По умолчанию

Закомментируй
Код:
FreeAndNil(jsExObject);
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 30.03.2015, 12:29   #5
Dozent
Форумчанин
 
Регистрация: 21.05.2008
Сообщений: 495
По умолчанию

хм! Страно! Даже не подумал! Но помогло!
Dozent вне форума Ответить с цитированием
Старый 30.03.2015, 12:30   #6
Dozent
Форумчанин
 
Регистрация: 21.05.2008
Сообщений: 495
По умолчанию

А убивать тогда как правильно тут?
Dozent вне форума Ответить с цитированием
Старый 30.03.2015, 12:38   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,061
По умолчанию

FreeAndNil(jsObject); убивает все вложенное
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 30.03.2015, 13:57   #8
Dozent
Форумчанин
 
Регистрация: 21.05.2008
Сообщений: 495
По умолчанию

Код:
function TTransport.GetNetMessageToActionScenario(StateScenario: string; ScenarioID, UserID: integer): string;
var
  jsObject, jsExObject: TJSONObject;
begin
  Result := '';
  jsObject := TJSONObject.Create();
  jsExObject := TJSONObject.Create();
  try
    jsObject.AddPair('id', Format('%s', ['123']));
    //
    jsExObject.AddPair('scenid', TJSONNumber.Create(128));
    jsExObject.AddPair('user', TJSONNumber.Create(125));
    //
    jsObject.AddPair(TJSONPair.Create('exercise', jsExObject));
    Result := jsObject.ToString;
  finally
    FreeAndNil(jsObject);
  end;
end;
Dozent вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать так, чтобы при наведении мышкой на объект, который находится под другим, этот объект выходил на первый план? Zaza7 HTML и CSS 3 17.01.2013 10:23
Итерация через объект JSON в Javascript maomam Помощь студентам 0 03.11.2012 00:51
Как в JSON выразить объект? Utkin Общие вопросы по программированию, компьютерный форум 6 16.06.2012 00:01
Шаблоны - нужно создать объект класса abc в котором вместо aa использовался бы объект класса fff? Farrel Общие вопросы C/C++ 2 13.11.2010 18:37
добавить в объект объект. the_deer_one Общие вопросы C/C++ 7 10.09.2010 12:17


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS