将数组中的数组解析为swift 4中的一些数组?
Posted
技术标签:
【中文标题】将数组中的数组解析为swift 4中的一些数组?【英文标题】:parsing array in array into some arrays in swift 4? 【发布时间】:2017-10-15 12:31:40 【问题描述】:我在我的新闻 api 代码中使用了解析子
儿子是这样的
>
"status": "ok",
"source": "associated-press",
"sortBy": "top",
-"articles": [
-
"author": "CHRISTINA A. CASSIDY and MEGHAN HOYER",
"title": "Pro-Trump states most affected by his health care decision",
"description": "President Donald Trump's decision to end a provision of the Affordable Care Act that was benefiting roughly 6 million Americans helps fulfill a campaign promise",
"url": "https:urlexample",
"urlToImage": "url example",
,
-
"author": "CHRISTINA A. CASSIDY and MEGHAN HOYER",
"title": "Pro-Trump states most affected by his health care decision",
"description": "President Donald Trump's decision to end a provision of the Affordable Care Act that was benefiting roughly 6 million Americans helps fulfill a campaign promise",
"url": "https:urlexample",
"urlToImage": "url example",
,
]
正如您在每个数组中看到的,我们有标题 - 描述等 我想将此 jason 解析为单独的数组,例如将所有标题附加到一个数组中,并将所有描述附加到另一个数组中等等
这是我的代码
struct Response : Decodable
let articles: articles
struct articles: Decodable
let title: String
let description : String
let url : String
let urlToImage : String
这里是json的代码
let jsonUrl = "https://newsapi.org/[your codes]"
guard let url = URL(string : jsonUrl) else
return
URLSession.shared.dataTask(with: url) (data , response , error) in
guard let data = data else return
do
let article = try JSONDecoder().decode(Response.self , from : data)
print(article.articles.title)
print(article.articles.description)
print(article.articles.url)
print(article.articles.urlToImage)
catch
print(error)
.resume()
当我运行它时,我会收到这个错误
“本应解码字典,但找到了一个数组。”,underlyingError: nil))
【问题讨论】:
【参考方案1】:首先,要区分属性/方法名和类型名,尽量遵循Swift命名约定:(以下来自Swift API Design guidelines)
类型和协议的名称是 UpperCamelCase。其他的都是lowerCamelCase。
此外,您的 articles
结构仅代表一篇文章的数据,而不是多篇文章。所以它应该以大写A开头,并且是单数:
struct Article: Decodable
其次,如果您再看看返回的 JSON,文章是一个 array 字典:
-"articles": [
-
"author": "CHRISTINA A. CASSIDY and MEGHAN HOYER",
...
,
-
"author": "CHRISTINA A. CASSIDY and MEGHAN HOYER",
...
,
所以Response
结构中的articles
属性应该是Article
的数组。
struct Response : Decodable
let articles: [Article]
【讨论】:
以上是关于将数组中的数组解析为swift 4中的一些数组?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 alamofire 返回 json 解析为 Swift 中的字符串数组?
我如何使用解码器在swift 4中解析tableview中的json数组