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字段中键值的核心数据的主要内容,如果未能解决你的问题,请参考以下文章

spark scala数据帧中键值对的增量值计数

使用 JSON 键值 ( id ) 更新核心数据

如何在Python中访问键值的前n个字符

python字典中键值对的值为中文,打印成转义字符,怎么解决

获取 RocksDB 中键值对的总数

PostgreSQL9.4往jsonb字段新增键值SQL怎么写