剑客
关注科技互联网

用JSONExport一键生成Model

以前跟着《第一行代码》入门 Android 的时候,学过几个解析 json 的方法,一个一个按 key 名找、建对象存等等,解析的工具也很多,以前对 json 不熟悉,这也浪费了我很多时间。现在刚入门 iOS 没多久就让我看到神器 JSONExport,解析 json 从此只是几行代码的事情~

JSONExport 是一个运行在 macOS 上通过 json 字符串转为 model 的开源工具,支持 Java、Objective-C 和 Swift。我发现了这工具之后忍不住用 Charles 到处抓 API 测试,这是后话~

每次学完了都觉得很基础..还是记下来吧..

工具

JSONExport 的项目地址在这: JSONExport

不过项目需要自己编译,嫌麻烦的可以直接下载我汉化好的 JSONExport ,如果失效请在评论留言,下面是界面:

用JSONExport一键生成Model

左边把 json 字符串放入,右下角选择要生成的 Model 即可。

使用

这里我使用 豆瓣图书 Api V2 的 API 做示范。

根据提供的 API ,假如我想获得十个书名为”ios 开发”的书籍名,可以构建 URL 为 "https://api.douban.com/v2/book/search?count=10&q=ios%20%E5%BC%80%E5%8F%91" ,在网页中打开获得 json 字符串。

遇到的坑:

  • json 字符串中含有中文可能会被说明“无效 json”,转成unicode再放到工具里去用吧,例如: 在线unicode转中文 ,或者用下图的 Paw。
  • Mac App Store 中也有同名工具,应该是别人直接修改原作者后上传的,能够根据 json 地址提取 json 数据,不过也是一搜中文就闪退。
  • JSONExport 没生成正确的 Model 就重启吧。

用JSONExport一键生成Model

复制至JSONExport中,右下角按需选择,这里我用 Swift – Struct 做示范。

用JSONExport一键生成Model

之后点右下角保存,把这六个文件拷到项目中就能直接使用了!我们可以直接构建一个 Struct。

BookInfo.swift

structBookInfo{
varimages =""
vartitle =""
varisbn13 =""
varurl =""
varsummary =""
}

这里我只需要图片、标题、isbn13、url和简介,接下来在 ViewController 中新建个方法获取数据,这里用了用 Swift 写的第三方网络库 Just。

letsearchUrl ="https://api.douban.com/v2/book/search?count=10&q=ios%20%E5%BC%80%E5%8F%91"//搜索"ios 开发"
varbooklist : [BookInfo] = []

overridefuncviewDidLoad(){
super.viewDidLoad()
 loadList()
}

funcloadList(){
Just.get(searchUrl) { (r)in
guardletjson = r.jsonas?NSDictionaryelse{
print("没有数据啊!!!")
return
 }

letbooks =SearchBook(fromDictionary: json).books!

self.booklist = books.map({ (book) ->BookInfoin
//数组转换数组 直接在 map 中用闭包
returnBookInfo(images: book.images.large, title: book.title, isbn13: book.isbn13, url: book.url, summary: book.summary)
 })

dump(self.booklist)

OperationQueue.main.addOperation {
self.tableView.reloadData()
self.refreshControl?.endRefreshing()
 }
 }
}

如果 Xcode 自动提示没有提供初始化语句,可以在刚刚的 BookInfo.swift 中自动补全代码,再剪切过来用。

用JSONExport一键生成Model

运行后可以看到 dump 的数据已经出来了:

用JSONExport一键生成Model

其实本文到这就差不多了,主要注意 Json 中数组和这里生成 Model 的关系。最后附上一个小 Demo ,还没加搜索框,没用完解析的数据,将就看吧…_(:ェ」∠)_

用JSONExport一键生成Model

项目可以参照这里 Donban-demo-with-JSONExport

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址