#livecode
#живой код
Вопрос:
Я пытаюсь создать простое мобильное приложение, которое запрашивает API и анализирует ответ для отображения определенных значений.
Мобильный телефон имеет 2 поля, а именно:
- Кнопка для запроса api
- Большое текстовое поле для отображения содержимого
В моем стеке livecode у меня есть следующие включения:
- Библиотека JSON
- mergJSON
- tsNet
Ответ api выглядит следующим образом:
{ "data": [ { "id": 1, "date_created": "2021-11-08T17:12:03Z", "date_updated": "2021-11-22T16:08:55Z", "first_name": "John", "last_name": "Doe", "email": "john.doe@unknown.com", "phone": "9876543210", "dob": "1980-01-01", "password": "xxxxxxxxx", "plan_start": "2021-11-22T16:07:46Z", "plan_expiry": "2021-12-21T16:06:25Z" } ] }
Я хочу проанализировать JSON, чтобы отобразить значение поля электронной почты в текстовом поле.
В моем стеке живых кодов:
- Кнопка называется «getdata».
- Текстовое поле называется «flddata».
В сценарий кнопки я добавил следующий код:
put "lt;api url endpointgt;" into tUrl put "Authorization: Bearer xxxxxxxxx" into tHeaders put tsNetGetSync(tUrl, tHeaders, tRecvHeaders, tResult, tBytes) into tData put JSONToArray(tData) into tDataArray put tDataArray["email"] into field "flddata"
Но это не работает. Ничего не происходит. Хоть убей, я не могу понять, в чем дело. Любая помощь будет признательна. Огромное спасибо!
Ответ №1:
Чтобы получить доступ к ключу «электронная почта» массива, построенного из JSON, которым вы поделились. Сначала вы должны получить доступ к ключу «данные», а затем к ключу 1. Таким образом, последняя строка вашего кода будет выглядеть следующим образом:
put tDataArray ["data"] [1] ["email"] into field "flddata"
Советы: Поставьте точку останова на этой линии. Это позволит вам увидеть содержимое переменных, чтобы вы могли видеть структуру массива.
Комментарии:
1. Спасибо @torocruzand. Это сработало! Я пытался использовать нулевой ключ и после этого решения проанализировал документацию, чтобы понять, что индексы массива Livecode начинаются с 1. Огромное спасибо!
Ответ №2:
Похоже, что это может быть многомерный массив. Вот простой способ взглянуть на то, как он структурирован:
- Перетащите виджет древовидного представления на свою карточку.
- Установите свойство arrayData виджета в свой массив tDataArray. Подобный этому:
set the arrayData of widget "Tree View" to tDataArray
Вы должны увидеть структуру массива в виджете древовидного представления. Возможно, что созданный массив выглядит примерно так:
put tDataArray[1]["email"] into field "flddata"