-1

我需要在 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"
  }
}
4

1 回答 1

0

如果我理解您的意思正确,您希望将 JSON 数组解析LoggedUserSession为 s 的 swift 数组LoggedUserSession。如果是这样的话,那么你就快到了。

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

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

您的LoggedUserSession对象已正确实现,所以现在您需要的只是数组解析部分。您可以使用以下结构来做到这一点:

struct SessionList: Decodable {

  let sessions: [LoggedUserSession]

}

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

于 2019-04-13T20:58:52.070 回答