Показать сообщение отдельно
  #5  
Старый 08.06.2014, 23:23
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от XaXaTyH
Разобраться не смог.
Вот пример обработки твоей строки с помощью библиотеки superobject:
Код:
uses superobject;
.....
procedure TForm1.Button1Click(Sender: TObject);
const
  cJSON: String =
    '{"adventures":{"list":[{"delay":"20","description":"\u0411\u0430\u043d\u0449\u0438\u043a-\u0442\u043e \u0441'+
    '\u043e\u0432\u0441\u0435\u043c \u043e\u0441\u0440\u0430\u043c\u0435\u043b, \u043d\u0430\u0448\u0438\u0445 \u'+
    '0431\u0430\u0431 \u0432 \u0431\u0430\u043d\u0435 \u043f\u0443\u0433\u0430\u0435\u0442, \u0430\u043d\u0443-\u'+
    '043a\u0430 \u0437\u0430\u0434\u0430\u0439 \u0435\u043c\u0443 \u0436\u0430\u0440\u0443!","reward_money":36,"b'+
    'ackground":"1","name":"\u0417\u0430\u0434\u0430\u0442\u044c \u0436\u0430\u0440\u0443","reward_exp":2,"npc":"'+
    '1","req_energy":"10","min_lvl":"1","id":"5","reward_exp_base":2,"reward_money_base":18,"clan_exp_boost":0,"c'+
    'lan_money_boost":0,"game_exp_boost":0,"game_money_boost":18},{"delay":"20","description":"\u041b\u044e\u0434'+
    ' \u0447\u0435\u0441\u0442\u043d\u043e\u0439 \u0432\u0441\u0435 \u0447\u0430\u0449\u0435 \u0436\u0430\u043b\u'+
    '0443\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0437\u043b\u044b\u0434\u0435\u043d\u044c \u0438\u0445 \u0'+
    '438\u0437\u0432\u043e\u0434\u0438\u0442. \u0415\u0433\u043e-\u0442\u043e \u0438 \u043d\u0430\u0434\u043e \u0'+
    '43f\u0440\u043e\u0443\u0447\u0438\u0442\u044c. \u041d\u043e \u0441\u043f\u0440\u0430\u0432\u0438\u0448\u044c'+
    '\u0441\u044f \u043b\u0438?","reward_money":4,"background":"1","name":"\u041f\u0440\u043e\u0443\u0447\u0438\u'+
    '0442\u044c \u0437\u043b\u044b\u0434\u043d\u044f!","reward_exp":18,"npc":"2","req_energy":"10","min_lvl":"1",'+
    '"id":"8","reward_exp_base":18,"reward_money_base":2,"clan_exp_boost":0,"clan_money_boost":0,"game_exp_boost"'+
    ':0,"game_money_boost":2},{"delay":"20","description":"\u0417\u0430\u043b\u044e\u0442\u043e\u0432\u0430\u043b'+
    '\u0430 \u0432 \u0434\u0435\u0440\u0435\u0432\u043d\u0435 \u0442\u044e\u0445\u0430 - \u0442\u043e\u043f\u0430'+
    '\u0435\u0442 \u0434\u0430 \u0441\u0442\u0443\u0447\u0438\u0442 \u043f\u043e \u043d\u043e\u0447\u0430\u043c, '+
    '\u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0441\u043b\u0430\u0434\u0443 \u0441 \u043d\u0435\u0439 \u'+
    '043d\u0435\u0442. \u041a\u043e\u043b\u044c \u0441\u043c\u043e\u0436\u0435\u0448\u044c \u0435\u0435 \u043e\u0'+
    '434\u043e\u043b\u0435\u0442\u044c - \u043d\u0430\u0433\u0440\u0430\u0436\u0443!","reward_money":30,"backgrou'+
    'nd":"1","name":"\u0422\u044e\u0445\u0430 \u0437\u0430\u043b\u044e\u0442\u043e\u0432\u0430\u043b\u0430","rewa'+
    'rd_exp":5,"npc":"3","req_energy":"10","min_lvl":"3","id":"14","reward_exp_base":5,"reward_money_base":15,"cl'+
    'an_exp_boost":0,"clan_money_boost":0,"game_exp_boost":0,"game_money_boost":15}],"bonus":{"type":"2","enabled'+
    '":"1","silver_multiplier":"1","experience_nultiplier":"0","experience_multiplier":"0"}}}';
var
  obj1: ISuperObject;
begin
  obj1 := SO(cJSON);
  Edit4.Text := obj1.S['adventures.list[0].reward_exp'];
  Edit5.Text := obj1.S['adventures.list[1].reward_exp'];
  Edit6.Text := obj1.S['adventures.list[2].reward_exp'];
end;

P.S. Только в модуле "superobject.pas" в строке 5638 нужно убрать директиву {$Q+}, иначе в старых версиях Delphi (в частности в Delphi 7) будет вылетать ошибка "Integer overflow".
Ответить с цитированием