如何在 iOS 中解析没有 JSONdecoder 的 JSON 对象? [复制]

Posted

技术标签:

【中文标题】如何在 iOS 中解析没有 JSONdecoder 的 JSON 对象? [复制]【英文标题】:How to parse JSON object without JSONdecoder in iOS? [duplicate] 【发布时间】:2021-08-27 06:49:43 【问题描述】:

好的,几天前我收到了这个奇怪的 JSON 格式,我不知道是否可以解码,但我想知道是否可以。


"status" : true,
"orderHistory": 
    "5" : 
        "productId" : 0,
        "productName" : "Anchovy",
        "quantity" : 1,
        "price" : "199"
        "variation": ""
    ,
    
    "17" : 
        "productId" : 0,
        "productName" : "Anchovy",
        "quantity" : 1,
        "price" : "199"
        "variation": ""
    ,
    
    "98" : 
        "productId" : 0,
        "productName" : "Anchovy",
        "quantity" : 1,
        "price" : "199"
        "variation": ""
    

Order History 应该是一个数组,但在这种情况下,后端发送这些带有随机字符串键的对象,我们无法创建可解码模型的原因是键是随机的,

关于如何解码这些数据并将其用于我们的 ios 应用程序的任何想法?

【问题讨论】:

没有必要把婴儿和洗澡水一起扔出去。您仍然可以在此处使用JSONDecoder JSONSerialization,但您仍然可以在某些时候将JSONDecoder 与属性一起使用:let orderHistory: [String: [OrderHistoryDecodableStruct]] 您的 JSON 数据集无效,因为价格键后面没有逗号。 【参考方案1】:

最好继续使用 JSON 解码器。

匹配 JSON 的根模型如下所示:

struct Body: Decodable 
    let status: Bool
    let orderHistory: [String: Order]

Order 模型会很简单。

【讨论】:

以上是关于如何在 iOS 中解析没有 JSONdecoder 的 JSON 对象? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

告诉 numberOfRowsInSection 在使用 MVVM 架构在闭包中使用 JSONDecoder 解析 JSON 后它需要多少行

JSONDecoder 解析不连贯

为啥 JsonDecoder 在尝试解析邮递员网址但处理其他网址时出现错误?

如何使用 jsonDecoder 处理来自 JSON 响应的动态键?

如何在 swift 4.1 和 xcode 9.3 中使用 JSONDecoder 解码嵌套的 JSON 数组和对象?

JSONDecoder 找不到存在的密钥