У меня возникли проблемы с анализом JSON в живом коде

#livecode

#живой код

Вопрос:

Я пытаюсь создать простое мобильное приложение, которое запрашивает API и анализирует ответ для отображения определенных значений.

Мобильный телефон имеет 2 поля, а именно:

  1. Кнопка для запроса api
  2. Большое текстовое поле для отображения содержимого

В моем стеке livecode у меня есть следующие включения:

  1. Библиотека JSON
  2. mergJSON
  3. 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, чтобы отобразить значение поля электронной почты в текстовом поле.

В моем стеке живых кодов:

  1. Кнопка называется «getdata».
  2. Текстовое поле называется «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:

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

  1. Перетащите виджет древовидного представления на свою карточку.
  2. Установите свойство arrayData виджета в свой массив tDataArray. Подобный этому:

    set the arrayData of widget "Tree View" to tDataArray

Вы должны увидеть структуру массива в виджете древовидного представления. Возможно, что созданный массив выглядит примерно так:

 put tDataArray[1]["email"] into field "flddata"