Помогите пожалуйста кто чем может начинающему парсеру JSON !
Видимо у меня пока хромает сама идеология работы с классом.
Честно - не понимаю как решить сабж ! Примеры смотрел, вроде не совсем тупой ...
Пошёл методом тыка. Пример - получить список сотрудников с телефонами.
Код: Выделить всё
StrJSON CString('{{' & |
'"Workers": [' & |
'{{"Name": "Igor",' & |
'"Contacts": {{' & |
'"Contact": [' & |
'{{"Phone": "+79031112233"},' & |
'{{"Phone": "+79034445566"}' & |
']}' & |
'},' & |
'{{"Name": "Oleg",' & |
'"Contacts": {{' & |
'"Contact": [' & |
'{{"Phone": "+79098887766"},' & |
'{{"Phone": "+79048881234"},' & |
'{{"Phone": "+79095554433"}' & |
']}' & |
'}' & |
']' & |
'}')
json cJSONFactory
root &cJson
jWorkers &cJson
jContact &cJson
T_Contact Queue,Type
Phone CString(21)
end
QWorks Queue
Name CString(21)
Contacts &T_Contact
end
Code
QWorks.Contacts &= New T_Contact
root &= json.Parse(StrJSON)
If Not Root &= Null
jWorkers &= root.FindObjectItem('Workers')
If Not jWorkers &= Null
If jWorkers.IsArray()
jWorkers.ToQueue(QWorks)
Message('Records(QWorks) = ' & Records(QWorks)) ! 2 СОТРУДНИКА - ВСЁ ПРАВИЛЬНО :)
! А ДАЛЬШЕ ?
!jContact &= root.FindObjectItem('Contact')
jContact &= jWorkers.FindObjectItem('Contact')
If Not jContact &= Null
If jContact.IsArray()
jContact.ToQueue(QWorks.Contacts) ! < --- И ВОТ ЗДЕСЬ НАСТИГ GPF :(
Message('Records(QWorks.Contacts) = ' & Records(QWorks.Contacts))
end
end
end
end
Root.Delete()
end
If Not (QWorks.Contacts &= Null)
Free(QWorks.Contacts)
Dispose(QWorks.Contacts)
end