使用Alamofire/SwiftyJSON获取JSON数组的第一个元素
我有一个Alamofire请求,结果得到了JSON。这是我的JSON:使用Alamofire/SwiftyJSON获取JSON数组的第一个元素,json,swift,alamofire,swifty-json,Json,Swift,Alamofire,Swifty Json,我有一个Alamofire请求,结果得到了JSON。这是我的JSON: "user" : { "field_first_name" : { "und" : [ { "value" : "Christopher", "format" : null, "safe_value" : "Christopher" } ] }, “und”值是一个数组,其中通常只有一个值。我想
"user" : {
"field_first_name" : {
"und" : [
{
"value" : "Christopher",
"format" : null,
"safe_value" : "Christopher"
}
]
},
“und”值是一个数组,其中通常只有一个值。我想随时获取这个数组的第一个元素,因为这个字段偶尔会有多个元素,但第一个元素总是正确的结果
下面的代码有效,直到我找到“.first”。这将返回一个类型为(String,JSON)的值,我不知道如何将该项“firstValue”恢复为可用格式。每当我尝试使用
Alamofire.request(url, method: .post, parameters:parameters, headers: headers)
.responseJSON { response in
if let data = response.result.value {
let json = JSON(json: data)
let firstValue = json["user"]["field_first_name"]["und"].first
print(firstValue!)
}
}
firstValue然后变成类型(String,JSON),我不知道如何处理它。我想得到的是“firstValue”中键“value”的值
这是“firstValue”打印出来的内容:
("0", {
"safe_value" : "Christopher",
"value" : "Christopher",
"format" : null
})
这种方法可以挽救吗?我可以做一个for-in循环,得到第一个结果,然后告诉它忽略其余部分,但这似乎不正确。感谢您的帮助。我知道这已经晚了一年多,但这应该适用于您的特定数据。不过,这是一行相当长的代码。我会将其分解以使其更具可读性
if let firstValue = json["user"]["field_first_name"] ["und"].arrayValue[0]["value"].string {
print(firstValue)
{
我相信你应该能做这样的事情
if let firstValue = json["user"]["field_first_name"]["und"].first?.1 {
print(firstValue)
}
尝试一下,不要先使用数组,然后再使用数组,让我知道它是否有效。我找到了一个解决方案:firstValue是一个元组,类型为(String,JSON),我只需要元组的第二部分。因此,如果我打印(firstValue.1[“value”]),它就可以工作