Comments 8
Синтаксис страшненький на мой взгляд.
смотрелось бы не так вырвиглазно
let obj = json.get("workplan.presets.1.id") as? Int
смотрелось бы не так вырвиглазно
0
Так тоже можно, более того, до этого у меня так и было сделано (правда в 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 в обертке, но это уже слишком :)
+2
Я пытался работать с optJSON и другие решения пробовал, но все же перешел на SwiftyJSON. Как и писал в статье. Там и синтаксис очень удобный, и библиотека хорошо тестами покрыта, и разработка постоянно продолжается.)
Вы, конечно, постарались. Если проект будет развиваться, то возьму его на заметку)
Вы, конечно, постарались. Если проект будет развиваться, то возьму его на заметку)
+1
Можно еще сделать расширение протокола JSONValue чтобы возвращал разные там intValue, stringValue без as. Вообще в Swift 2 все намного проще и интрересней, чем было раньше. Тогда ограничений было намного боьльше. Возможно, поэтому автор и использовал некоторые костыльные решения. Я и в своем коде до сих пор их нахожу и исправляю на более нормальные варианты swift 2.
0
Именно этого не хватало в optJSON, а точнее именно это и мешало, так что результат отличный
0
Попробуйте SwiftyJSON — библиотека написана намного более качественно, и код парсинга сокращает в разы.
-1
Sign up to leave a comment.
JSON в Swift 2.0 без анестезии