проанализировать объект JSON для объекта пользовательского класса в сценарии действия 3 - PullRequest
1 голос
/ 08 августа 2011

Я хочу проанализировать строку JSON для некоторых моих пользовательских объектов в сценарии Action 3. Существуют ли библиотеки для этого.Или любые идеи, как я могу сделать это.Спасибо!

Вот пример того, что я хочу получить:

{
    "result":{
        "birthday_at":"0000-00-00",
        "first_name":"Myname1",
        "level":5,
        "last_name":"MySurname",
        "gender":0
    },
    "cmd":"INFO",
    "service":{
        "code":0,
        "error_desc":""
    }
}

и класс UserInfo:

public class UserInfo
{
  public Date birthday_at;
  public String first_name;
  public String last_name;
  public int level;
  public int gender;
}

И я хочу, чтобы проанализировать строку JSON в поляхмоего класса?Как я могу сделать это самым простым и правильным способом?Thanx!

Ответы [ 3 ]

3 голосов
/ 11 февраля 2012
var obj:Object = JSON.decode( jsonString );
var user:UserInfo = new UserInfo();

for ( var prop:String in obj )
    user[prop] = obj[prop];

Это не работает для пользовательских типов с геттерами (свойства только для чтения).Для того чтобы получить только те свойства, которые могут быть установлены, можно использовать attributeType, но есть проблемы с производительностью.

У Даррона Шалла есть блестящее решение взять простой объект JSON.parse (jsonString) и преобразовать его в пользовательский тип.объект.

https://github.com/darronschall/ObjectTranslator

2 голосов
/ 08 августа 2011

Используя класс, упомянутый в предыдущем ответе, вам просто нужно сделать следующее:

 var obj:Object = JSON.decode( jsonString );
 var user:UserInfo = new UserInfo();

 for ( var prop:String in obj )
    user[prop] = obj[prop];

2 голосов
/ 08 августа 2011

Есть парсер JSON от Adobe.

https://github.com/mikechambers/as3corelib/tree/master/

import com.adobe.serialization.json

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...