在我的应用程序中,我需要查询核心数据,我有一个表,其中包含一个存储json字符串的字段。现在我需要查询此表以查找在此字段中具有特定键值对的任何条目。我已经尝试用LIKE表达式来解决这个问题,但是由于WILDCARDS与NEWLINE相匹配,所以这并不是很好。现在我坚持要弄清楚我必须使用MATCHES操作的正则表达式。
该值的键和子字符串是已知的,我只需要找到包含它们的条目,没有别的 :)
答案 0 :(得分: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表达式的查询
答案 1 :(得分:1)
用正则表达式解决了它:
for(NSString* value in values)
{
if(value.length > 0)
{
if(i > 0)
{
[query appendString:@" OR "];
}
[query appendFormat:@" (json_data MATCHES[c] '.*?\"%@\\\":\\\"([^\"]*)%@([^\"]*)\".*?')",key,value];
i++;
}
}