我有一个带有嵌套数组的JSON,我想访问该嵌套数组中包含的数据之一,但是我不知道该怎么做。
我正在开发IOS App,并尝试从JSON(现在是本地)解析一些数据。我想向用户显示一些数据。
这是我的JSON的样子:
{
"format": "json",
"data": [
{
"type": "channel",
"id": "789",
"updated_at": "2019-05-03 11:32:57",
"unread_count": 3,
"title": "title",
"context": "search",
"relationships": {
"recipients": [
{
"type": "user",
"rating": 5,
"is_spotlighted": false,
"id": 123,
"participant_id": 456
}
],
}
}
}
现在,我使用以下命令访问其他值:
struct Root: Decodable {
let format: String
let data: [ChannelData]
}
struct ChannelData: Decodable {
let title, type, id, context, updatedAt: String
let unreadCount: Int
let relationships: Relationships
}
struct Relationships: Decodable {
let recipients: [Recipient]
}
struct Recipient: Decodable {
let type: String
let id: Int
let participantId: Int
let isSpotlighted: Bool
let rating: Double
}
我要访问的数据是“评级”
这是我的viewDidLoad()的样子:
var chatList = [ChannelData]()
override func viewDidLoad() {
super.viewDidLoad()
let url = Bundle.main.url(forResource: "channels", withExtension: "json")!
let data = try! Data(contentsOf: url)
let decoder = JSONDecoder()
decoder.keyDecodingStrategy = .convertFromSnakeCase
let result = try! decoder.decode(Root.self, from: data)
chatList = result.data
self.tableView.reloadData()
}
在其他功能中,我尝试通过以下方式访问评分:
let currentChat = chatList[indexPath.row]
cell.Name.text = currentChat.relationships.recipients
当我尝试在.recipients之后获取其他参数时,什么也没有显示。我是使用JSON的初学者,也或多或少地使用Swift。
答案 0 :(得分:0)
Relationships
包含一个类型为recipients
的属性[Recipient]
。您可以使用.first
访问数组中的第一个Recipient
对象。然后,您可以从Recipient
对象获得任何属性
cell.Name.text = currentChat.relationships.recipients.first?.rating