gpt4 book ai didi

ios - 从服务器响应解析字符串数组时出现问题

转载 作者:行者123 更新时间:2023-11-28 14:52:02 31 4
gpt4 key购买 nike

我有来自 api 响应的以下 json 字符串...

    ["products": <__NSArrayI 0x7fa103868000>(
{
barcode = HDz;
"category_json" = "[{\"category_name\":\"Home\",\"category_id\":\"2\"}]";
"created_at" = "2018-04-09 12:56:35";
"discount_price" = "5000.00";
.....

我正在像这样解析这个响应......

if httpResponse.statusCode == 200 {

print("SUCCESS!")

if let result = response.result.value as? [String:Any] {
print(result)

guard let products = result["products"] as? [[String:Any]] else {
return
}

for value in products {
if let barcode = value["barcode"] as? String {
self.theBarcode = barcode
}

if let discountPrice = value["discount_price"] as? String {
self.theDiscountRate = discountPrice
}
//Issue arises here
guard let category = value["category_json"] as? [[String: Any]] else {
return
}

一切正常。但是当我到达类别部分时,控件会返回并发生退出。不知道为什么会这样......

最佳答案

"category_json":"[{\"category_name\":\"Home\",\"category_id\":\"2\"}]"

这是 JSON 中的 JSON(字符串化)。

你的工具是什么:
字典或数组 object <= (through) JSONSerialization) => Data object
String object <=> Data object

因此您需要使用JSONSerialization() 再次解析它。

let categoryStringified = "[{\"category_name\":\"Home\",\"category_id\":\"2\"}]"
//in your case let categoryStringified = value["category_json"] as String
let categoryStringifiedData = categoryStringified.data(using: .utf8)
let categories = try? JSONSerialization.jsonObject(with: categoryStringifiedData!, options: []) as! [[String: Any]]
print("categories: \(categories)")
for aCategory in categories {
...
}

旁注:为了逻辑,我强制解包,没有在 try? 等上执行 catch 等。
您已经知道如何管理它们(您使用 guard letif let 等)

关于ios - 从服务器响应解析字符串数组时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49775888/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com