正则表达式过滤掉json字符串中的部分键值
Posted
技术标签:
【中文标题】正则表达式过滤掉json字符串中的部分键值【英文标题】:regular expression to filter out part of key value in a json string 【发布时间】:2011-05-08 20:11:33 【问题描述】:我将以下 JSON 字符串作为日志行的一部分。
cells : "Lac":"7824","CntryISO":"us","NetTyp":"GSM","NetOp":"310260","Cid":"11983"
我想过滤成以下格式:"Lac":"7824","Cid":"11983"
。
如何使用正则表达式做到这一点?在 javascript 或 Python 中? 键是常量字符串(Lac,CntryISO,...),但值字符串是变化的。
【问题讨论】:
天啊! ***.com/questions/1732348/… 除了使用正则表达式解析 JSON 比使用它们解析 XML 更迟钝,因为 JSON 更容易正确使用。 对于那些认为这是智障问题的人...这是来自我从服务器获得的日志文本...我知道我可以轻松地重新构建 json 对象并对其进行操作...但是,为此为每个日志行创建一个 json 开销太大了....我相信 reg exp 应该能够处理它.. 【参考方案1】:你为什么不用 JavaScript delete
他们?
var myJson = "Lac":"7824","CntryISO":"us","NetTyp":"GSM","NetOp":"310260","Cid":"11983";
delete myJson.Lac;
delete myJson.cId;
【讨论】:
为什么 reg exp 不能处理这个?应该没那么难...我讨厌为每个日志行创建一个 json 对象并让 GC 不断运行。【参考方案2】:既然可以只使用 JSON 解析器/序列化器,为什么还要使用正则表达式呢?如果你关心速度,可以试试 Python 中的 cjson,它比 Python 标准库中的 'json' 模块更快。
【讨论】:
我可以...但是需要为每个日志行创建 json 对象的开销...我只是想知道这对 reg exp 应该不难...也许我错了。跨度> 【参考方案3】:扩展和解释@alex 答案:
JSON 是一种嵌套的多维结构。简单地过滤“Javascript 对象的字符串化形式”(又名 JSON)将在非常简单的情况下工作,但当结构不再平坦或它开始变得复杂时转义字段等时会迅速失败。
此时您将需要正确的解析逻辑。这很好地由 Javascript 本身提供,引用@alexes 代码:
var myJson = "Lac":"7824","CntryISO":"us","NetTyp":"GSM","NetOp":"310260","Cid":"11983";
delete myJson.Lac;
delete myJson.cId;
或者,如果你想使用 python,json
模块可以正常工作:
http://docs.python.org/library/json.html
祝你好运! :)
【讨论】:
以上是关于正则表达式过滤掉json字符串中的部分键值的主要内容,如果未能解决你的问题,请参考以下文章