Квадратные скобки с mergJSON в LiveCode - что я делаю не так?
Веб-сервис, к которому я подключаюсь, возвращает свой JSON в ответ на запрос, таким образом:
[{
"dob":"25/12/68",
"firstname":"Mary",
"lastmoddate":1368519205101,
"lastname":"Smith",
"resident_id":"712d9b726603426ca36f9c77fa644ae9",
"createddate":1368519205101
}]
... который я извлекаю из веб-службы и храню в поле под названием "Мой JSON".
Как вы заметите, в начале и в конце есть квадратные скобки, которые, я считаю, действительны для массивов JSON? У меня есть следующий скрипт в LC, который на данный момент просто извлекает "имя" из моего массива и помещает его в tMyVar для отображения:
function JSONToArray pJSON
local tArray,tKeys
repeat for each line tKey in mergJSONDecode(pJSON,"tArray")
put JSONToArray(tArray[tKey]) into tArray[tKey]
end repeat
return tArray
end JSONToArray
on mouseUp
put field "My JSON" into pJSON
put JSONToArray(pJSON) into tArray
put tArray["firstname"] into tMyVar
answer tMyVar
end mouseUp
Это странно, но когда я запускаю веб-сервис JSON через mergJSON WITH квадратные скобки, переменная tMyVar становится пустой, но если я удаляю квадратные скобки от начала и конца, переменная просто наполняется содержимым "firstname".
Кто-нибудь может подсказать, что я делаю не так, пожалуйста?
Спасибо,
Стив
1 ответ
Поскольку он возвращает объект внутри массива, JSONToArray создаст многомерный массив. Измените ваш обработчик mouseUp на:
on mouseUp
put field "My JSON" into pJSON
put JSONToArray(pJSON) into tArray
put tArray[1]["firstname"] into tMyVar
answer tMyVar
end mouseUp