我正在使用Swift和第三方Web服务中的一些JSON。我已经设法恢复JSON,但它的格式不是我习惯的方式。这是一个示例:
{
"Type": "Success",
"Results": [
{
"Key": "UserID",
"Value": "40372"
},
{
"Key": "Name",
"Value": "Jeff"
},
{
"Key": "Age",
"Value": "35"
},
{
"Key": "IsTempPassword",
"Value": "False"
},
{
"Key": "IsUserProfileComplete",
"Value": "True"
}
]
}
我想将这些数据解析为一个名为“User”的自定义swift对象,我遇到的问题是“key”的值实际上是关键本身。有没有一种有效的方法我可以遍历这个JSON,寻找“Key”获取它的价值,然后查找相应的“Value”并将它们配对?
答案 0 :(得分:0)
如果您的JavaScript对象的名称类似于"响应"
var response = {
"Results": [
{
"Key": "UserID",
"Value": "40372"
}
]
}
您可以访问键/值对:
var user = {}
for (var obj in response.Results)
{
user[response.Results[obj].Key] = response.Results[obj].Value;
}
console.log(user); // Object {UserID: "40372"}
带有工作示例的Here's a plunker(确保打开JavaScript控制台,没有结果写入DOM)。
答案 1 :(得分:0)
我有一个问题的解决方案,最后我使用了GitHub提供的SwiftlyJSON库,这使得JSON在swift中变得更加简单。 Here是使用Swift中的JSON和Ray Wenderlich的SwiftlyJSON的一个很好的资源。无论如何,它不是一个特别优雅的解决方案,但它做了我需要的。
let json = JSON(data: data)
if let resultsArray = json["Results"].arrayValue {
for x in resultsArray {
var keyName:String = x["Key"].stringValue!
var KeyValue:String = x["Value"].stringValue!
switch keyName{
case "UserID":
UserID = KeyValue
case "Name":
Name = KeyValue
case "Age":
Age = KeyValue
default:
break
}
}
}