У меня есть 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
}
Данные, к которым я хочу получить доступ, - это "rating "
Вот так выглядит мой 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
Nothingотображается, когда я пытаюсь получить другие параметры после .recipients.Я новичок в использовании JSON и более или менее в Swift.