在 Swift 4 中使用 { "Name" : 字符串, "Value" : 字符串} 结构解析数组



我需要在 Swift 中解析一个类似于这样的数据结构(基于 JSON):

[
{
"Name": "uniquename",
"Value": "John"
}, 
{
"Name": "locale",
"Value": "UK"
}, 
]

我把这个节点存储在这样的struct

struct Rowset : Decodable {
var row: LoggedUserSession
init(loggedUser: [LoggedUserSession]){
self.row = loggedUser[0]
}
enum CodingKeys: String, CodingKey{
case row = "Row"
}
}

我为我需要从数组中提取的所有数据准备了一个类似的struct,但我不知道如何迭代并在名称字符串与我的情况匹配时返回值。

struct LoggedUserSession : Decodable {
var username: String;
var locale: String;

init(username: String, locale: String) {
// In JS I would embedd an iterator here and return the values 
self.username = username
self.locale = locale
}
enum CodingKeys: String, CodingKey {
case username = "uniquename"
case locale = "locale"
}
}

如果我正确理解您在说什么,您希望将LoggedUserSessionJSON 数组解析为一个快速的LoggedUserSession数组。如果是这样的话,那么你就快到了。

为了完整起见,我将按如下方式解释您发布的 JSON,使其有效:

{"loggedUserSessions":
[
{
"uniquename": "John",
"locale": "UK"
}
]
}

您的LoggedUserSession对象已正确实现,因此现在您只需要数组解析部分。您可以使用以下结构执行此操作:

struct SessionList: Decodable {
let sessions: [LoggedUserSession]
}

使用JSONDecoder调用它,您的 JSON 数据应该将您的列表序列化为一个数组,您可以通过SessionListsessions属性访问该数组。

最新更新