【问题标题】:Parse and iterate through JSON string in Objective-C在 Objective-C 中解析和遍历 JSON 字符串
【发布时间】:2019-11-27 18:10:06
【问题描述】:

这可能很简单,但我是 Objective-c 的新手,我找不到如何做到这一点的方法,我有一个看起来像这样的字符串:

[
 {quantity: 2, product: "CHEESEBURGER", price: 14.44, extraingredients: [{name:'extra sos', price:3.00}]},
 {quantity: 1, product: "FANTA", price: 14.40},
 {quantity: 1, product: "CHICKEN POKE BOWL", price: 14.50}
]

现在我需要解析这个字符串并遍历每个对象,还需要遍历每个 extraingredients 数组。

我做了一些研究,我发现解析是这样的:

NSArray* json = [NSJSONSerialization
                            JSONObjectWithData:[jsonString dataUsingEncoding:NSUTF8StringEncoding]
                            options:NSJSONReadingMutableContainers
                            error:&e];

但这不起作用

【问题讨论】:

    标签: objective-c json


    【解决方案1】:

    如上所述,字符串不是有效的 JSON。关键字(例如quantityproduct)必须用双引号括起来,name 的字符串值也必须用双引号括起来。对字符串进行更改,NSJSONSerialization 类有效:

    NSString *jsonString = @"[{\"quantity\": 2, \"product\": \"CHEESEBURGER\", \"price\": 14.44, "\
                            "\"extraingredients\": [{\"name\":\"extra sos\", \"price\":3.00}]}, "\
                            "{\"quantity\": 1, \"product\": \"FANTA\", \"price\": 14.40}, "\
                            "{\"quantity\": 1, \"product\": \"CHICKEN POKE BOWL\", \"price\": 14.50}]";
    
    NSError *e;
    NSArray* json = [NSJSONSerialization JSONObjectWithData:[jsonString dataUsingEncoding:NSUTF8StringEncoding]
                                                    options:NSJSONReadingMutableContainers
                                                      error:&e];
    

    【讨论】:

    • 你是对的,但是如何遍历整个数组以及如何访问属性,如属性的 javascript 点名(.name 或 .product),然后如果它内部有子数组,例如 extraingredients数组
    猜你喜欢
    • 1970-01-01
    • 2011-10-27
    • 2021-04-29
    • 1970-01-01
    • 1970-01-01
    • 2017-01-30
    • 1970-01-01
    • 1970-01-01
    • 2018-09-18
    相关资源
    最近更新 更多