Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将正则表达式应用于json响应数据_Javascript_Json_Regex - Fatal编程技术网

Javascript 将正则表达式应用于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

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",
        "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));