下面是我的employee.json 文件的模板
{
"orgConfig": {
"departments": []
}
}
Run Code Online (Sandbox Code Playgroud)
其中部门将有如下所示的一系列部门
{
"name" : "physics",
"id" : "1234",
"head" : "abcd"
}
Run Code Online (Sandbox Code Playgroud)
相似地
{
"name" : "chemistry",
"id" : "3421",
"head" : "xyz"
}
Run Code Online (Sandbox Code Playgroud)
所以我想构造的最终数组结构如下
{
"orgConfig": {
"departments": [
{
"name" : "physics",
"id" : "1234",
"head" : "abcd"
},
{
"name" : "chemistry",
"id" : "3421",
"head" : "xyz"
},
{
"name" : "Maths",
"id" : "4634",
"head" : "jklm"
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
下面是我将 json 元素动态添加到 Departments 数组的代码 …
有一个像这样的大 json
"envConfig": {
"environmentName": {
"versions": [
{
"name": "version1",
"value": "Dev"
},
{
"name": "version2",
"host": "qa"
}
],
"userRoles": [
{
"name": "Roles",
"entry": [
{
"name": "employees",
"value": "rwx"
},
{
"name": "customers",
"value": "rx"
}
]
}
]
}
},
Run Code Online (Sandbox Code Playgroud)
我想将 JSON 属性从“environmentName”更改为“prod”。以下是我期待的输出
"envConfig": {
"prod": {
"versions": [
...
],
"userRoles": [
...
]
}
}
Run Code Online (Sandbox Code Playgroud)
尝试使用 sed 命令如下
sed "s/\('environmentName':\)/\1\"prod\"\,/g" version.json
Run Code Online (Sandbox Code Playgroud)
尝试使用 jq 如下但不起作用
cat version.json | jq ' with_entries(.value |= {"prod" : …Run Code Online (Sandbox Code Playgroud) 我有以下要求,其中输入的文本必须匹配以下任何允许的字符列表,并获得所有不匹配reg exp模式的字符.
和特殊字符如:
我可以构建的正则表达式如下
/[^a-zA-Z0-9\ \.@\,\r\n*=:;\-_\&()\'\/]/g
Run Code Online (Sandbox Code Playgroud)
举个例子,比如说input='123.@&-_()/*=:/\';#$%^"~!?[]av'.无效字符是'#$%^"~!?[]'.
下面是我采用的方法来获得不匹配的字符.
1)构造如下所示的允许reg expn模式的否定.
/^([a-zA-Z0-9\ \.@\,\r\n*=:;\-_\&()\'\/])/g (如果这个reg exp是正确的,请更正吗?)
2) 使用替换功能获取所有字符
var nomatch = '';
for (var index = 0; index < input.length; index++) {
nomatch += input[index].replace(/^([a-zA-Z0-9\ \.@\,\r\n*=:;\-_\&()\'\/])/g, '');
}
so nomatch='#$%^"~!?[]' // finally
Run Code Online (Sandbox Code Playgroud)
但是这里的replace函数总是返回一个不匹配的字符.所以使用循环来获取所有.如果输入为100个字符,则它循环100次并且是不必要的.
有没有更好的方法让所有字符与下面的行中的reg exp模式不匹配.
非常感谢您对此提供任何帮助.