Вопрос по json – Получить и проанализировать JSON в Actionscript

6

Я хочу сделать запрос на этот URL:http://api.beatport.com/catalog/3/most-popular, который должен вернуть некоторый JSON, а затем проанализировать определенную информацию из него.

Как бы я поступил так в ActionScript 3? Меня больше интересует выяснение того, как получить данные для передачи в анализатор JSON, а не анализировать JSON, поскольку кажется, что есть много вопросов о синтаксическом анализе JSON. Причина, по которой я хочу сделать это в AS3, заключается в том, что у меня настроена трехмерная флэш-визуализация, и я хочу получить эти данные, проанализировать соответствующие биты и затем отобразить проанализированные биты в визуализации.

Я открыт для любых других способов сделать это, которые могут быть легко интегрированы с Flash, кроме AS3, если есть более простой способ сделать это на другом языке.

Ваш Ответ

3   ответа
12

corelib.swc to your library path.

Import the JSON library: import com.adobe.serialization.json.JSON;

Call your service with code something like this:

var request:URLRequest=new URLRequest();
request.url=YOUR_ENDPOINT
request.requestHeaders=[new URLRequestHeader("Content-Type", "application/json")];
request.method=URLRequestMethod.GET;
var loader:URLLoader=new URLLoader();
loader.addEventListener(Event.COMPLETE, receive);
loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, notAllowed);
loader.addEventListener(IOErrorEvent.IO_ERROR, notFound);
loader.load(request);

protected function receive(event:Event):void
{
     var myResults:Array=JSON.decode(event.target.data);
}

Parse the results with JSON.decode(results).

as3corelib поддерживается здесь:https://github.com/mikechambers/as3corelib#readme.

Error: User Rate Limit Exceeded Saliceran
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
JSON декодирует в объекты в AS3. С этим синтаксисом будут связаны массивы: {someProp: someValue, someOtherProp: someOtherValue и обычные массивы с этим синтаксисом: [someValue, someOtherValue]. Вам нужно будет пройтись по структуре с помощью комбинации циклов for. Для итерации по свойствам объекта или связанного массива используйте цикл for-in: for (var prop: String in object) {trace (object [prop]}. Для итерации по массиву используйте цикл for-each: for each ( var arrayItem: Object в someArray) {trace (someItem.someProperty)}. Object.hasOwnProperty (& quot; someProp & quot;) подтверждает, что свойство существует.
3

as3corelib имеет JSONсериализатору а такжедесериализатор

Вы можете использовать их вместо того, чтобы заново изобретать колесо и заново писать логику разбора.

10

если вы используете Flash Player 11 или AIR 3.0 или более поздней версии, вы можете использовать встроенный объект JSON для декодирования вашего JSON. Это объект верхнего уровня, поэтому вам даже не нужно ничего импортировать, просто сделайте:

var decoded : Object = JSON.parse(loadedText);

Увидеть:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/JSON.html

Похожие вопросы