Comments 8
Синтаксис страшненький на мой взгляд.
смотрелось бы не так вырвиглазно
let obj = json.get("workplan.presets.1.id") as? Int
смотрелось бы не так вырвиглазно
Так тоже можно, более того, до этого у меня так и было сделано (правда в ObjC классе).
Но при этом, во-первых нужно создавать специальный объект для работы с Dictionary, во вторых не очень красива конструкция «presets.1» (можно представить ситуацию, когда неправильно сформированный JSON имеет строковый ключ «1» вместо извлечения по индексу).
Кроме того, в реальной жизни эта конструкция будет выглядеть немного страшнее: «workplan.presets.\(index).id». Ну и лучше-бы на мой взгляд по subscript извлекать, а не методом .get()
А если захочется все-таки вытащить Dictionary preset, а потом из него уже все мапить: json.get(«workplan.presets.1»)? Получается дальше уже не получится так красиво, либо еще раз его придется заворачивать во что-то, либо функцией Get возвращать сразу dict в обертке, но это уже слишком :)
Но при этом, во-первых нужно создавать специальный объект для работы с Dictionary, во вторых не очень красива конструкция «presets.1» (можно представить ситуацию, когда неправильно сформированный JSON имеет строковый ключ «1» вместо извлечения по индексу).
Кроме того, в реальной жизни эта конструкция будет выглядеть немного страшнее: «workplan.presets.\(index).id». Ну и лучше-бы на мой взгляд по subscript извлекать, а не методом .get()
А если захочется все-таки вытащить Dictionary preset, а потом из него уже все мапить: json.get(«workplan.presets.1»)? Получается дальше уже не получится так красиво, либо еще раз его придется заворачивать во что-то, либо функцией Get возвращать сразу dict в обертке, но это уже слишком :)
Я пытался работать с optJSON и другие решения пробовал, но все же перешел на SwiftyJSON. Как и писал в статье. Там и синтаксис очень удобный, и библиотека хорошо тестами покрыта, и разработка постоянно продолжается.)
Вы, конечно, постарались. Если проект будет развиваться, то возьму его на заметку)
Вы, конечно, постарались. Если проект будет развиваться, то возьму его на заметку)
Можно еще сделать расширение протокола JSONValue чтобы возвращал разные там intValue, stringValue без as. Вообще в Swift 2 все намного проще и интрересней, чем было раньше. Тогда ограничений было намного боьльше. Возможно, поэтому автор и использовал некоторые костыльные решения. Я и в своем коде до сих пор их нахожу и исправляю на более нормальные варианты swift 2.
Именно этого не хватало в optJSON, а точнее именно это и мешало, так что результат отличный
Попробуйте SwiftyJSON — библиотека написана намного более качественно, и код парсинга сокращает в разы.
Sign up to leave a comment.
JSON в Swift 2.0 без анестезии