首页 > 解决方案 > 在 Objective-C 中解析和遍历 JSON 字符串

问题描述

这可能很简单,但我是 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-cjson

解决方案


如上所述,该字符串不是有效的 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];

推荐阅读