« Один из самых популярных недавно созданных языков в мире не позволяет легко работать с наиболее распространенным форматом данных? »
** Отказ от ответственности: я разработчик JavaScript. JavaScript потрясающий, и, честно говоря, мне надоел догматический мусор людей. **
JSON или нотация объектов JavaScript - это формат файла для передачи данных в Интернете ».
Я изучаю Swift для работы. Что-то круто, что-то нет.
Swift вышел в 2014 году. По моему опыту, работать с JSON в Swift ужасно. Я понятия не имею, как один из самых популярных недавно созданных языков в мире не обеспечил простой способ работы с наиболее распространенным форматом файлов для веб-API.
Да и кстати, на случай, если кто-то попытается быть этим парнем:
Я пробовал! Я думаю, что документация Swift, как и множество других документов, не имеет большого смысла для тех, кто плохо знаком со Swift. Или, может быть, я испорчен огромным сообществом JavaScript.
После всего этого я пишу эту короткую статью в качестве справочника для других людей, изучающих Swift. Надеюсь, я избавлю тебя от боли.
JSON в JS
let myJSON = { name: "Jake", hair: "brown", age: 22, isMarried: false }
Обработка этого JSON в JS очень проста (я полагаю, что это не обязательно справедливое сравнение, потому что это объектная нотация JAVASCRIPT).
let myJSON = { name: "Jake", hair: "brown", age: 22, isMarried: false } let name = myJSON.name
Работает именно так, как вы думаете (и должно).
JSON в Swift 4
// inside a hypothetical promise callback because I have no idea how you would represent that myJSON object in Swift - if it's even possible... .done { JSON in let responseDictionary = JSON as! [NSDictionary] let name = responseDictionary["name"] as? String let hair = responseDictionary["hair"] as? String let age = responseDictionary["age"] as? Int let isMarried = responseDictionary["isMarried"] as? Bool }
Что здесь вообще происходит? Что ж, эта статья мне очень помогла:
«Если приведение выполнено успешно, оно вернет приведенное значение, в противном случае -
nil
».
Прежде чем я понял это и начал работать, я пробовал кучу различных вариантов этого синтаксиса и не мог заставить их работать. Все еще привыкаю к необязательному и принудительному кастингу и привязке
Я не смог найти хороших примеров работы с JSON в Swift, хотя я могу найти их теперь, когда я лучше понимаю. Кажется, всегда так работает с программированием. 🤔🙃
Сначала я бросил полотенце и использовал Pod под названием SwiftyJSON, о котором я слышал из курса Swift Udemy, который я беру.
Затем мой коллега сказал мне, что мы не собираемся использовать это в проекте, над которым работаем, так что вернемся к этой уродливости.
Вывод
Так что ты думаешь? Ты тоже думаешь, что это мерзко?
В этом случае я не чувствую себя защищенным предполагаемой безопасностью строгой типизации. Я просто чувствую себя скованной. Работа с JSON в Swift была в миллион раз более разочаровывающей, чем любая ошибка, с которой я столкнулся с нетипизированным JavaScript JSON.
Он такой жесткий спереди. Я чувствую, что лучшее из обоих миров - позволить вам добавить набор текста, но позволяет вам изначально работать с JSON идеально неограниченным образом.
Но, кто знает, может быть, Swift подрастет на мне. Некоторые вещи хороши, например, тот факт, что мне не нужно импортировать или экспортировать какие-либо классы, которые я пишу.
Может быть, этот синтаксис и мне понравится. Хотя не могу представить, что предпочту этот синтаксис свободе JavaScript.
Если вы полностью не согласны и работаете над этим в команде Swift, мне бы хотелось узнать, почему и если вы открыли лучший способ работы с JSON. Я буду рад обновить эту статью и сослаться на вас!