Javascript 将正则表达式应用于json响应数据
Scenario client发出GET请求响应采用类似于下面的JSON格式Javascript 将正则表达式应用于json响应数据,javascript,json,regex,Javascript,Json,Regex,Scenario client发出GET请求响应采用类似于下面的JSON格式 var data = { "enabled": true, "state": "schedule", "schedules": [ { "rule": { "start": "2014-06-29T12:36:26.000", "end": "2014-06-29T12:36:56.000", "recur
var data = {
"enabled": true,
"state": "schedule",
"schedules": [
{
"rule": {
"start": "2014-06-29T12:36:26.000",
"end": "2014-06-29T12:36:56.000",
"recurrence": [
"RRULE:FREQ=MINUTELY"
]
},
"wifi_state_during_rule": "disabled",
"end_state": "enabled"
}
],
"calculated_wifi_state_now": "disabled",
"time_of_next_state_change": [
"2014-07-08T18:56:56.000Z",
"2014-07-08T18:57:56.000Z"
]
};
在本例中,我将结果存储在一个名为“data”的变量中。
我的正则表达式是:
checkPattern = /"\w+\"(?=:)/ //all keys "keyname": ...
这里的基本思想是,除了在和对象或数组中之外,还要获取键名……因为JSON中键名的定义是“keyname”:这就是我尝试使用上述正则表达式的原因
我甚至想过用递归函数来实现这一点,但它不起作用。这将为您提供所有的
键作为匹配项:
\”(\w+(:\”\:)
编辑为在一行上使用多个键。您永远不应该使用正则表达式解析非正则结构
只需从已解析的json对象中收集所需内容。
只需运行data=JSON.parse(JSON\u string)
进行解析
您可以筛选、排序、排除数字键。。。所有您需要的。这不需要正则表达式。Javascript有一个内置函数来提取对象键名
示例:
使用Object.keys()
然后
console.log(Object.keys(data));
应打印
[“已启用”、“状态”、“计划”、“已计算的无线网络状态”、“下一次状态更改的时间”]
证明:
现在所有对象键都存储在一个数组中。
希望这能有所帮助为什么要使用正则表达式呢?Json字符串可以很容易地转换为javascript、c#、Java和许多其他语言中的实际对象。真的没有必要使用正则表达式。因此,请详细说明regex的必要性,或者进行研究,将其转化为一个对象。信息就在那里。这里的重点是不使用正则表达式或不使用正则表达式。我只想提取名称,即使它们是嵌套的。我使用了一个regexp进行测试,如果一行上有多个键,这就不起作用了。+
太贪婪了。谢谢,先生,这才是我真正需要的。
var data = {
"enabled": true,
"state": "schedule",
"schedules": [
{
"rule": {
"start": "2014-06-29T12:36:26.000",
"end": "2014-06-29T12:36:56.000",
"recurrence": [
"RRULE:FREQ=MINUTELY"
]
},
"wifi_state_during_rule": "disabled",
"end_state": "enabled"
}
],
"calculated_wifi_state_now": "disabled",
"time_of_next_state_change": [
"2014-07-08T18:56:56.000Z",
"2014-07-08T18:57:56.000Z"
]
};
console.log(Object.keys(data));