Здравствуйте, в последнее время у меня возникли проблемы с использованием данных JSON в Flash Builder, и я надеялся, что кто-нибудь сможет мне помочь.
Я провел последний месяц, основательно работая над этой проблемой, так что я осматривался, пробовал все, что мог найти или придумать. Я просто застрял.
Я работаю над гибким мобильным приложением для планшета Blackberry Playbook с Adobe Flash Builder 4.6. Это приложение Reddit, предназначенное для предоставления пользователям основного канала Reddit, субреддитов, функции поиска, возможно, входа в систему и т. д. Конечно, мне нужна помощь Reddit API для доступа к этой информации, документацию по которой можно найти здесь: https://github.com/reddit/reddit/wiki/API/ API использует данные в формате XML или JSON.
Теперь о моей проблеме. Как упоминалось выше, я хочу отображать ленту Reddit внутри приложения. Я хочу иметь возможность использовать средство визуализации элементов для настройки данных, отображаемых в каждой записи списка.
Одна запись будет состоять из: 1) эскиза изображения в сообщении 2) заголовка сообщения 3) кнопки «нравится/не нравится», но это неважно в данный момент.
Конечно, для начала я поместил компонент искрового списка в представление дизайна. Затем я настроил новую службу данных HTTP с помощью панели «Данные/Службы». Я указал http://www.reddit.com/r/all.json для URL. Я настроил тип возврата и выполнил тестовую операцию. Все нормально подключилось. Все данные пришли в норме. Я дам вам представление о том, как возвращаются данные, чтобы вы могли понять мою проблему позже.
Результаты тестовой операции (структура данных json):
- NoName1
- data
- after
- до
- children
- [0]
- data
- media_embed
- счет
- id
- заглавие
- миниатюра
- URL
- (и т.д. и т.п...)
- своего рода
- data
- [1]
- data
- media_embed
- счет
- заглавие
- миниатюра
- (и т.д. и т.п...)
- своего рода
- data
- [2] (массив продолжается)
- [0]
- модхэш
- своего рода
- data
Как видите, например, чтобы добраться до миниатюры, вам нужно пройти через data.children[].data.thumnail. Когда я попытался связать эти данные с компонентом искрового списка, я указал службу данных из приведенной выше. Затем я указал для параметра Поставщик данных значение Children[], так как это значение обычно устанавливается для массива. Вот тут-то и начинаются проблемы. Последняя опция, Поле метки, давала мне только одно значение на выбор: «вид». Итак, как вы можете сказать, он не ожидал, что данные будут вложены дальше. Он останавливается на двух значениях только внутри каждого элемента массива, которые будут данными и типом, хотя он предлагает мне только тип. Мне нужно перейти на один уровень выше, чтобы получить доступ к заголовку и эскизу. Это моя проблема.
Теперь я проанализировал код для привязки и попытался изменить его, чтобы приспособить дополнительное вложенное значение. Никакого успеха. Ниже приведен код, который генерирует привязка:
<s:List
id="myList" width="100%" height="100%" change="myList_changeHandler(event)"
creationComplete="myList_creationCompleteHandler(event)" labelField="kind">
<s:AsyncListViewlist="{TypeUtility.convertToCollectionredditFeedJSONResult.lastResult.data.children)}"/>
<s:List>
Очевидно, я хотел бы иметь что-то вроде строк: "TypeUtility.convertToCollection(redditFeedJSONResult.lastResult.data.children.data"
, а затем установить labelField="title"
или «миниатюру».
Я очень надеюсь, что кто-нибудь поможет мне с этим. Я не в своем уме, что делать. Если вам нужны дополнительные разъяснения, я буду рад предоставить их. Я попытался объяснить ситуацию выше как можно яснее. Большое спасибо.
Тед