Доброго времени суток. Раз уж речь зашла о JSON и дабы не плодить темы может кто-нибудь помочь оптимизировать код и/или удалить лишнее? Код рабочий (откопан в инете и переделан под себя), но знаний не хватает, что бы адаптировать его к нынешним возможностям классов (к примеру в TJSONArray теперь не рекомендуется использовать Get, нужно использовать Items)
System.JSON.TJSONArray.Get
....
Warning: Get is deprecated. Please use Items.
Items:
__property TJSONValue* Items[const int Index] = {read=GetValue};
Работаю в RAD Studio XE8, нужно распарсить ответ vk api, метод video.get.
(Указаны то, что мне нужно, ещё нужен count - идет сразу после response)
#include
...
TJSONObject* obj( dynamic_cast < TJSONObject*>( TJSONObject::ParseJSONValue( RESTResponse1->Content ) ) );
TJSONObject* rsp = dynamic_cast < TJSONObject*>( object->Get( "response" )->JsonValue );
TJSONArray* items = dynamic_cast < TJSONArray* >( rsp->Get( "items" )->JsonValue );
TJSONObject* obj2 = dynamic_cast <TJSONObject*>( items->Get(i) );
id = obj2->GetValue( "id" )->ToString( );
oid = obj2->GetValue( "owner_id" )->ToString( );
title = obj2->GetValue( "title" )->ToString( );
player = obj2->GetValue( "player" )->ToString( );
Меня беспокоит наличие большого кол-ва TJSONObject. Как я понял просто TJSONObject* obj; дело не кончится и нужны dynamic_cast
RESTResponse кстати тоже умеет работать с JSONValue, но не уверен, что он сумеет разобрать весь массив, а только первую группу (имеется ввиду items:
[{id....},{id....}])
Пример ответа АПИ:
response: {
count: 18,
items: [{
id: 123456789,
owner_id: 123456,
title: 'ИТ: Будь в теме!',
duration: 603,
description: '...',
date: 12345678,
views: 666,
comments: 18,
...
player: 'http://www.youtube.com/embed/d....'
}, {
id: 122345467,
owner_id: 12345,
title: '...',
duration: 93,
Спасибо