JSON 匹配 NSString 和 NSDictionary

Posted

技术标签:

【中文标题】JSON 匹配 NSString 和 NSDictionary【英文标题】:JSON matching NSString with NSDictionary 【发布时间】:2014-04-04 18:39:32 【问题描述】:

我正在尝试匹配我在preparedtoseg 期间从另一个UITableView 获得的JSON NSString,以匹配两组JSON 包含相同密钥的nid。 我想要的是让这个 UITableView 只显示匹配的 nid 内容。 我将从第二个 UITableView 发布 2 组我的 JSON 和我的代码。请大家帮帮我。

这是第一组 myJSON

[

node_title: "Fumi",
nid: "9",
Body: "<p>Fumi Restaurant</p> ",
Shop Branch Reference: "8",
Shop Enterprise Reference: "<a href="/drupal/node/7">Fumi</a>",
Shop Service Time: [
"<div class="time-default"> Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday 10:00am - 8:00pm</div> "
],
Shop User Reference: "<a href="/drupal/user/12">suppae</a>"
,

node_title: "Shop Number One",
nid: "3",
Body: "<p>This is body for shop number one This is body for shop number one This is body for shop number one This is body for shop number one This is body for shop number one This is body for shop number one This is body for shop number one This is body for shop number one This is body for shop number one This is body for shop number one This is body for shop number one</p> ",
Shop Branch Reference: "2",
Shop Enterprise Reference: "<a href="/drupal/node/1">Fuji</a>",
Shop Service Time: [
"<div class="time-default"> Monday, Tuesday, Wednesday, Thursday, Friday 10:00am - 10:00pm</div> ",
"<div class="time-default"> Saturday, Sunday 9:00am - 10:00pm</div> "
],
Shop User Reference: "<a href="/drupal/user/9">testshop</a>"

]

这是我的第二组 JSON

   [
    
    node_title: "CTW",
    nid: "8"
    ,
    
    node_title: "Siam Paragon",
    nid: "2"
    
    ]

现在,我设法实施匹配来解决问题。 我现在的问题是我需要在匹配后为我的 json 设置新值,以便可以在 UITableview 上填充它。

这是我的代码

for(int i = 0; i < [_Json count]; i++) 
        NSString * match =[[_Json valueForKey:@"nid"]objectAtIndex:i];
        NSString * branch =[self.detail valueForKey:@"Shop Branch Reference"];
        if([match isEqualToString:branch]) 
            NSLog(@"Found ");

非常感谢您的帮助。

【问题讨论】:

“我需要在匹配后为我的 json 设置新值,以便可以在 UITableview 上填充它”不是对您的问题的很好描述——您想要做什么? ?? (首先,请记住,您不是在处理 JSON,而是在处理 NSArrays 和 NSDictionarys。并且要“变异”一个,“设置”某些东西,它必须是“可变的”。所以,我能理解你的问题,你想构建一个新的 NSMutableArray 包含来自其他两个数组的组合值。) @HotLicks 很抱歉描述不佳,是的,您理解我的问题。基本上,根据我的两组 JSON,我的第二个 UITableView 将仅显示一个与商店分支参考匹配的 nid。感谢您的快速回复 因此,构建一个包含组合值的新 NSMutableArray(作为新的 NSMutableDictionarys)。或者使用现有 NSJSONSerialization 调用上的选项返回“可变容器”并使用另一个数组的信息修改您拥有的数组之一。 【参考方案1】:

首先,为您省去很多麻烦:如果您将块的开头 放在行尾,Xcode 会很好地格式化它,而不是将您的代码放在屏幕的最右边。

其次,您可以编写一个方法来完成所有处理并从块中调用它,从而使您的代码更具可读性。

第三,如果我有一个字典数组,并且想找到一个键/值对“nid”:“8”的字典,我会写

for (NSDictionary* dict in array)
    if ([dict [@"nid"] isEqualToString:@"8"])
        NSLog (@"Found the dictionary!!!");

【讨论】:

我设法通过使用 for(int i = 0; i 你能帮我解决我当前的问题吗?

以上是关于JSON 匹配 NSString 和 NSDictionary的主要内容,如果未能解决你的问题,请参考以下文章

来自 webview 的 NSString 和 JSON 字符串

NSString 转 UTF-8 的符号匹配问题

iOS开发--字典(NSDictionary)和JSON字符串(NSString)之间互转

如何使用来自 NSString 的 NSJSONSerialization 解析 Json [重复]

当应用程序未运行时处理 JSON 推送通知解析

将 NSString 数据转换为 JSON 格式