使用高阶功能从帐户中提取联系人 [英] extract contacts from account using High order function
本文介绍了使用高阶功能从帐户中提取联系人的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何使用高阶函数从帐户JSON对象提取联系人和帐户显示名称列表.我需要的是提取联系人的姓氏和名字并将其拼凑成一个数组
How I can extract contacts and account display name list from accounts JSON object using High order functions. what I need is contact first name and Lastname extracted and flaten in one array
我的迅捷物体
struct Account: Codable {
var accountID, displayName, managedByStakeholderID, id: String?
var contacts: [Contact]?
}
struct Contact: Codable {
var firstName: String?
var lastName: String?
}
JSON
{
"Accounts":[
{
"AccountID":"ef391c24-ad5b-4dca-98ae-b55793dfc029",
"Contacts":[
{
"AccountID":"ef391c24-ad5b-4dca-98ae-b55793dfc029",
"AvatarImage":"",
"ContactEmail":"cbacon@associates.com",
"ContactID":"f74d3810-625f-43d4-afd4-89346a73f807",
"ContactTitle":"Chief Executive Officer",
"DisplayName":"Ch Bacon",
"FirstName":"Ch",
"LastName":"Baco",
"ManagedByStakeholderID":"97e5f0d5-df0d-48fe-bbbb-cccf251f4175",
"Notes":"OWNER",
"Roles":[
{
"RoleEnvironmentName":"",
"RoleEnvironmentTenantName":"",
"RoleID":"3a824b1e-26d6-41c5-8336-4b79f0962c38",
"RoleName":"Environment Administrator"
}
],
"StakeholderID":"97e5f0d5-df0d-48fe-bbbb-cccf251f4175",
"id":"f74d3810-625f-43d4-afd4-89346a73f807"
}
],
"DisplayName":"Chris Associates Ltd."
},
{
"AccountID":"C31ACAD6-0E5D-43E0-B1A2-E51FD46BFE3A",
"Contacts":[
{
"AccountID":"C31ACAD6-0E5D-43E0-B1A2-E51FD46BFE3A",
"AvatarImage":"http://www.image.com/",
"ContactEmail":"jhgjhg@njkjk.com",
"ContactID":"28fad61f-9a47-41db-888e-19d66de96638",
"ContactTitle":"",
"DisplayName":"fvdfvdf",
"FirstName":"dfvdfv",
"LastName":"dfvdfv",
"ManagedByStakeholderID":"97e5f0d5-df0d-48fe-bbbb-cccf251f4175",
"Notes":"",
"Roles":[
],
"StakeholderID":"43d3af87-fd21-404c-9af6-2998e401fcb8",
"id":"28fad61f-9a47-41db-888e-19d66de96638"
}
],
"DisplayName":"adidas "
},
{
"AccountID":"A4FBDC11-AB07-47BD-8364-0B1D81D8E38F",
"Contacts":[
{
"AccountID":"A4FBDC11-AB07-47BD-8364-0B1D81D8E38F",
"AvatarImage":"http://www.image.com/",
"ContactEmail":"jeff@linkedin.com",
"ContactID":"c205d05d-c4cf-46b2-a9fd-e85af2f317b9",
"ContactTitle":"",
"DisplayName":"Jeff Weiner",
"FirstName":"Jeff",
"LastName":"Weiner",
"ManagedByStakeholderID":"97e5f0d5-df0d-48fe-bbbb-cccf251f4175",
"Notes":"",
"Roles":[
],
"StakeholderID":"c6fc9b6e-f857-4ca1-8352-dc55b05a9373",
"id":"c205d05d-c4cf-46b2-a9fd-e85af2f317b9"
}
],
"DisplayName":"LinkedIn. Inc "
}
]
}
推荐答案
您可以获取响应帐户属性和flatMap联系人:
You can get your response accounts property and flatMap the contacts:
struct Response: Decodable {
let accounts: [Account]
enum CodingKeys: String, CodingKey {
case accounts = "Accounts"
}
}
struct Account: Decodable {
let accountID, displayName, managedByStakeholderID, id: String?
let contacts: [Contact]
enum CodingKeys: String, CodingKey {
case accountID = "AccountID", displayName = "DisplayName", managedByStakeholderID = "ManagedByStakeholderID", id = "ID", contacts = "Contacts"
}
}
struct Contact: Decodable {
let firstName: String
let lastName: String
enum CodingKeys: String, CodingKey {
case firstName = "FirstName", lastName = "LastName"
}
}
let jsonResponse = """
{
"Accounts":[
{
"AccountID":"ef391c24-ad5b-4dca-98ae-b55793dfc029",
"Contacts":[
{
"AccountID":"ef391c24-ad5b-4dca-98ae-b55793dfc029",
"AvatarImage":"",
"ContactEmail":"cbacon@cpb&associates.com",
"ContactID":"f74d3810-625f-43d4-afd4-89346a73f807",
"ContactTitle":"Chief Executive Officer",
"DisplayName":"Ch Bacon",
"FirstName":"Ch",
"LastName":"Baco",
"ManagedByStakeholderID":"97e5f0d5-df0d-48fe-bbbb-cccf251f4175",
"Notes":"OWNER",
"Roles":[
{
"RoleEnvironmentName":"",
"RoleEnvironmentTenantName":"",
"RoleID":"3a824b1e-26d6-41c5-8336-4b79f0962c38",
"RoleName":"Environment Administrator"
}
],
"StakeholderID":"97e5f0d5-df0d-48fe-bbbb-cccf251f4175",
"id":"f74d3810-625f-43d4-afd4-89346a73f807"
}
],
"DisplayName":"Chris Associates Ltd."
},
{
"AccountID":"C31ACAD6-0E5D-43E0-B1A2-E51FD46BFE3A",
"Contacts":[
{
"AccountID":"C31ACAD6-0E5D-43E0-B1A2-E51FD46BFE3A",
"AvatarImage":"http://www.image.com/",
"ContactEmail":"a@mail.com",
"ContactID":"28fad61f-9a47-41db-888e-19d66de96638",
"ContactTitle":"",
"DisplayName":"fvdfvdf",
"FirstName":"dfvdfv",
"LastName":"dfvdfv",
"ManagedByStakeholderID":"97e5f0d5-df0d-48fe-bbbb-cccf251f4175",
"Notes":"",
"Roles":[
],
"StakeholderID":"43d3af87-fd21-404c-9af6-2998e401fcb8",
"id":"28fad61f-9a47-41db-888e-19d66de96638"
}
],
"DisplayName":"adidas "
},
{
"AccountID":"A4FBDC11-AB07-47BD-8364-0B1D81D8E38F",
"Contacts":[
{
"AccountID":"A4FBDC11-AB07-47BD-8364-0B1D81D8E38F",
"AvatarImage":"http://www.image.com/",
"ContactEmail":"jeff@linkedin.com",
"ContactID":"c205d05d-c4cf-46b2-a9fd-e85af2f317b9",
"ContactTitle":"",
"DisplayName":"Jeff Weiner",
"FirstName":"Jeff",
"LastName":"Weiner",
"ManagedByStakeholderID":"97e5f0d5-df0d-48fe-bbbb-cccf251f4175",
"Notes":"",
"Roles":[
],
"StakeholderID":"c6fc9b6e-f857-4ca1-8352-dc55b05a9373",
"id":"c205d05d-c4cf-46b2-a9fd-e85af2f317b9"
}
],
"DisplayName":"LinkedIn. Inc "
}
]
}
"""
do {
let contacts = try JSONDecoder().decode(Response.self, from: Data(jsonResponse.utf8)).accounts.flatMap(\.contacts)
print(contacts) // [__lldb_expr_79.Contact(firstName: "Ch", lastName: "Baco"), __lldb_expr_79.Contact(firstName: "dfvdfv", lastName: "dfvdfv"), __lldb_expr_79.Contact(firstName: "Jeff", lastName: "Weiner")]
} catch { print(error) }
这篇关于使用高阶功能从帐户中提取联系人的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文