我想知道是否可以排除字符或跳过更具体的内容,如果它们存在则跳过它们。我有JSON文件,如:
{
"key1": "value1",
"key2": "value2",
"array1": [
{
"key3":"value3",
"key4":"value4"
},
{
"key5":"value5",
"key6":"value6"
},
{
"key7":"value7",
"key8":"value8"
}
]
}
我希望在正则表达式中获得输出:
{"key3":"value3","key4":"value4"}
{"key5":"value5","key6":"value6"}
{"key7":"value7","key8":"value8"}
我的正则表达式的第一个版本是:
"array1":\[(\{[A-za-z0-9%,:."]+})+
我不知道如果它存在,如何跳过“,”字符。 为了简化它,我使用没有空格的JSON:
{"key1":"value1","key2":"value2","array1":[{"key3":"value3","key4":"value4"},{"key5":"value5","key6":"value6"},{"key7":"value7","key8":"value8"}]}
所以我不知道是否可以用正则表达式做我想做的事情,或者我应该返回array1并使用例如java来处理它以拆分为字符串。
答案 0 :(得分:0)
尝试替换不需要的字符:
str = '{"key1":"value1","key2":"value2","array1":[{"key3":"value3","key4":"value4"},{"key5":"value5","key6":"value6"},{"key7":"value7","key8":"value8"}]}';
str = str.split('[');
newStr = str[1].replace(/},/g, '}\n').replace('}]', '');
console.log(newStr);

答案 1 :(得分:0)
正则表达式不是这项工作的最佳工具。
对JSON进行解码并对数据进行操作的简单PHP脚本始终生成正确的结果,并且还能够检测到无效的输入:
$json = << END
{
"key1": "value1",
"key2": "value2",
"array1": [
{
"key3":"value3",
"key4":"value4"
},
{
"key5":"value5",
"key6":"value6"
},
{
"key7":"value7",
"key8":"value8"
}
]
}
END;
$data = json_decode($json, TRUE);
foreach ($data['array1'] as $value) {
echo json_encode($value), "\n";
}
验证不包含在上面的代码中,但可以通过检查json_encode()
针对NULL
返回的值轻松添加。