有没有像正则表达式,但匹配JSON而不是字符串?

时间:2011-08-13 11:27:52

标签: regex json parsing

正则表达式允许我们指定字符串应匹配的格式,然后测试字符串是否匹配,找出匹配的位置,并捕获反向引用。

我想为JSON提供类似的功能。考虑:

{ "title": "My blog entry",
  "author": { "name": "Joe", "id": 4324132 },
  "comments: [
    "first!!!",
    "Very insightful!",
    "A++ would read again"
  ]
}

您可以将其与以下内容匹配:

{ "title": (title),
  "author": *,
  "comments": [
    "first!!!",
    ...
  ]
}

(哪个会成功返回,并将捕获title绑定到值"My blog entry"

这只是一个例子。对于从验证API响应到从JSON提取信息到甚至(一个RE替换)转换JSON的所有内容都非常有用。

有人见过这样的事吗?令人惊讶的是,在相同的上下文中搜索正则表达式和JSON只会导致人们尝试使用正则表达式解析JSON。 EW。

3 个答案:

答案 0 :(得分:1)

有一些工具可以帮助你做到这一点,虽然不完全是正则表达式。

首先,您需要的是验证您的数据,因为您可以使用JSON Schema

其次,要提取标题,假设您不想解码json字符串,如果您使用的是JS或PHP,则可以使用JSONPath,或者可以尝试使用JsonGrep进行CLI或者Python。 CLI解析也有jshon

答案 1 :(得分:1)

你应该看看json:select - 它就像JSON的CSS选择器......它与处理结构化数据时的“正则表达式”非常接近。

如果你想从命令行玩它,请查看underscore-cli,它将“select”公开为其命令之一。

答案 2 :(得分:0)

jsonmatch是一个库,用于执行您要查找的内容的验证部分。它比上面接受的答案中引用的JSON Schema库更简单/更轻。如果你想扩展它以进行捕获,那么热烈欢迎拉取请求;)。