【发布时间】:2017-12-29 20:21:38
【问题描述】:
我正在使用 SwiftyJSON、Alamofire_SwiftyJSON 和 Alamofire 库。我正在尝试解析我的响应,但它什么也没返回(“定义”无法打印)。 JSON 不是空的,它已经得到了响应。
所以,我的代码如下所示(没有失败,全部编译)
Alamofire.request(request).responseSwiftyJSON { dataResponse in
if let JSON = dataResponse.result.value {
print(JSON)
if let definitions = JSON["results"]["lexicalEntries"]["entries"]["senses"]["definitions"].string {
print(definitions)
print("Hello")
}}
}
我的响应模型看起来像(这不是整个响应,这正是我想要达到的:
{
"results" : [
{
"language" : "en",
"id" : "ace",
"type" : "headword",
"lexicalEntries" : [
{
"language" : "en",
"entries" : [
{
"etymologies" : [
"Middle English (denoting the ‘one’ on dice): via Old French from Latin as ‘unity, a unit’"
],
"grammaticalFeatures" : [
{
"type" : "Number",
"text" : "Singular"
}
],
"homographNumber" : "000",
"senses" : [
{
"definitions" : [
"a playing card with a single spot on it, ranked as the highest card in its suit in most card games"
我认为我的问题在于,我应该添加任何括号或任何符号吗?
if let definitions = JSON["results"]["lexicalEntries"]["entries"]["senses"]["definitions"].string
【问题讨论】:
-
这里有几个问题试图错误地访问您的 JSON 解析对象。首先从不正确访问数组项开始。例如这里
JSON["results"]["lexicalEntries"],值JSON["results"]是一个数组,所以这不是一个有效的访问。这种情况在您的陈述中发生的次数也更多。 -
@SpencerWieczorek 你能给我一个正确的步骤,让我的回复更深入吗?
-
试试:
JSON["results"][0]["lexicalEntries"][0]等等。只需确保您正在根据响应的结构进行访问。由于某种原因,几乎每个对象都不必要地包装成一个数组。 -
是的,它有效,谢谢