« Один из самых популярных недавно созданных языков в мире не позволяет легко работать с наиболее распространенным форматом данных? »

** Отказ от ответственности: я разработчик 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. Я буду рад обновить эту статью и сослаться на вас!

Некоторые другие ресурсы