JSON 解析:从 NSDictionary 检索数据并将其存储在数组中

Posted

技术标签:

【中文标题】JSON 解析:从 NSDictionary 检索数据并将其存储在数组中【英文标题】:JSON Parsing : Retrieving data from the NSDictionary and storing it in an array 【发布时间】:2015-02-03 12:19:17 【问题描述】:

    Address =     (
                
            address = "Bengaluru, Karnataka 560008, India";
            "address_id" = 29;
            "address_title" = "";
            "building_name" = "";
            latitude = "23.95579108";
            longitude = "77.64169808";
            "user_id" = 13;
        ,
                
            address = "Bengaluru, Karnataka 560008, India";
            "address_id" = 31;
            "address_title" = "";
            "building_name" = "";
            latitude = "22.95578162";
            longitude = "77.64173089";
            "user_id" = 13;
        ,
                
            address = "Bengaluru, Karnataka 560008, India";
            "address_id" = 37;
            "address_title" = "";
            "building_name" = "";
            latitude = "22.95577373";
            longitude = "77.64173507";
            "user_id" = 13;
        ,
                  
            address = "256, Road Number 19, Wadla Village, Vadala, Mumbai, Maharashtra 400031, India";
            "address_id" = 49;
            "address_title" = dsa;
            "building_name" = das;
            latitude = "19.01761470";
            longitude = "72.85616440";
            "user_id" = 13;
        
    );

我正在尝试从 JSON 字典中检索数据。 我需要从地址字典中获取地址中的数据并将其存储在一个数组中。 我的数组应该是这样的: [Bengaluru, Karnataka 560008, India,Bengaluru, Karnataka 560008, India,Bengaluru, Karnataka 560008, India,256, Road Number 19, Wadla Village, Vadala, Mumbai, Maharashtra 400031, India]

需要帮助。

【问题讨论】:

你检查过 nsjsonserialization 类和它的方法吗? 好吧,你不只是创建一个 NSMutableArray 并从字典中添加任何你想要的东西吗? 如我所见,您的 JSON 数组不正确。地址缺少双引号,JSON 数组中不应有分号。 【参考方案1】:
NSMutableArray *resultArray = [NSMutableArray new];   
NSError *jsonError = [[NSError alloc] init];
NSDictionary *pR = [NSJSONSerialization JSONObjectWithData:yourJsonObject options:NSJSONReadingAllowFragments error:&jsonError];
NSArray *pArray = pR[@"Address"];

for(NSDictionary *dict in pR)

    [resultArray addObject:dict[@"address"]];

【讨论】:

谢谢贾德。但实际上它仍然无法正常工作,它会以 nil 值崩溃。 哪里崩溃了?尝试记录 pR、pArray 和 dict。让我知道会发生什么 [resultArray addObject:dict[@"address"]]; resultArray 返回 nil 你能在循环中记录 dict[@"address"] 并告诉我你得到了什么吗?? 任何时候都没有问题:D,只需提交有效的答案,这样人们就知道你得到了回答:D【参考方案2】:

Filtering NSDictionary with predicate

您可以使用 NSPredicate 过滤 NSDictionary。

假设你的字典是NSDictionary *dict

NSArray *resultArray = [[dict objectForKey:@"Address" allValues] filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"(key == %@)", @"address"]];

【讨论】:

以上是关于JSON 解析:从 NSDictionary 检索数据并将其存储在数组中的主要内容,如果未能解决你的问题,请参考以下文章

NSDictionary - 从返回的 JSON 服务中解析项目

Swift:解析 JSON,NSDictionary 的 NSDictionary

从 JSON 响应设置 NSDictionary 中的值

为啥 NSJSONSerialization 将 NSDictionary 错误地解析为 JSON?

从存储在 NSDictionary 中的 JSON DATA 将应用程序名称存储在 NSArray 中

无法解析 json