将Array模型对象转换为JSON - Swift 5



我有一个创建的函数将数组转换为JSON,我想将它用于我的模型,因为我必须将其转换为AWSJSON并且它不起作用。

下面是我得到的错误:

Thread 1: EXC_BAD_ACCESS (code=EXC_I386_GPFLT)

guard let data = try? JSONSerialization... below in the function

数组包含

let chainsWithBalance = await tokenBalancesClassAViewModel.getChainsOnlyWithWalletBalance(wallet: walletAddress)

现在…当我打印上面的变量时,我得到:

[appName.AllChainsItemsClassAModel(name: Optional("eth-mainnet"), chain_id: Optional("1"), db_schema_name: Optional("chain_eth_mainnet"), label: Optional("Ethereum Mainnet"), logo_url: Optional("https://www.covalenthq.com/static/images/icons/display-icons/ethereum-eth-logo.png"), is_testnet: Optional(false)), appName.AllChainsItemsClassAModel(name: Optional("matic-mainnet"), chain_id: Optional("137"), db_schema_name: Optional("chain_matic_mainnet"), label: Optional("Matic Mainnet"), logo_url: Optional("https://www.covalenthq.com/static/images/icons/display-icons/polygon-matic-logo.png"), is_testnet: Optional(false)), appName.AllChainsItemsClassAModel(name: Optional("bsc-mainnet"), chain_id: Optional("56"), db_schema_name: Optional("chain_bsc"), label: Optional("Binance Smart Chain"), logo_url: Optional("https://www.covalenthq.com/static/images/icons/display-icons/binance-coin-bnb-logo.png"), is_testnet: Optional(false))
]

可能是我必须循环通过它,然后重新分配给一组新的数组展开它?

下面是将其转换为JSON的函数

func convertChainsIntoJSON(chains: [AllChainsItemsClassAModel]) -> String? {
guard let data = try? JSONSerialization.data(withJSONObject: chains, options: []) else {
return nil
}
return String(data: data, encoding: String.Encoding.utf8)
}

这是我使用的模型:

struct AllChainsItemsClassAModel: Codable, Hashable {
let name, chain_id, db_schema_name, label, logo_url: String?
let is_testnet: Bool?
}

我很困惑,这是怎么回事?该函数可以很好地转换类型为["a", "b"]

的数组

感谢

您的自定义类型符合Codable协议,所以使用它来代替

func convertChainsIntoJSON(chains: [AllChainsItemsClassAModel]) -> String? {
guard let data = try? JSONEncoder().encode(chains) else { return nil }
return String(data: data, encoding: String.Encoding.utf8)
}

最新更新