json字段中键值的核心数据
Posted
技术标签:
【中文标题】json字段中键值的核心数据【英文标题】:core data for key-value in json field 【发布时间】:2012-05-25 14:26:38 【问题描述】:在我的应用程序中,我需要查询核心数据,我有一个表,其中包含一个存储 json 字符串的字段。现在我需要在该表中查询在该字段中具有特定键值对的任何条目。我已经尝试使用 LIKE 表达式来解决这个问题,但由于 WILDCARDS DO MATCH THE NEWLINE 这并不顺利。现在我一直在弄清楚我必须在 MATCHES 操作中使用哪个正则表达式。
值的键和子字符串是已知的,我只需要找到包含它们的条目,没有别的 :)
【问题讨论】:
【参考方案1】:您可以为该实体写入一个 getter 属性,它只返回一个普通字符串而不是 json 字符串,例如:
- (NSString *)stringRepresentation
NSError *error = nil;
NSData* data=[self.jsonStringProperty dataUsingEncoding:NSUTF8StringEncoding];
NSString *string = [JSONObjectWithData:data options:0 error:&error];
if (error)
... // error handling
return string;
然后您可以在该属性上使用带有 LIKE 表达式的查询
【讨论】:
【参考方案2】:用正则表达式解决:
for(NSString* value in values)
if(value.length > 0)
if(i > 0)
[query appendString:@" OR "];
[query appendFormat:@" (json_data MATCHES[c] '.*?\"%@\\\":\\\"([^\"]*)%@([^\"]*)\".*?')",key,value];
i++;
【讨论】:
以上是关于json字段中键值的核心数据的主要内容,如果未能解决你的问题,请参考以下文章