首页 > 解决方案 > 使用 jq 在 windows cmd 中为特殊字符更正嵌套对象的配额设置

问题描述

我有以下 json 输入文件(我知道这不是一个好的结构,但我无法更改它)

{
  "TEST1": {
              "ONE": "value",
              "TWO": "value-1",
           },
  "TEST2": [
             {
               "A":  [
                       "test": "test"
                     ],
               "B-B":[
                       "test": "test"
                     ]
             }
          ]
}

我想在批处理循环中处理它。但有时里面有特殊字符需要转义。

for /f %%i in ('type %LOCAL_PATH_FILE% ^| %JQ% -r ".TEST2[]  | keys[]"') do (
    set SUB=%%i
    ECHO  sub is !SUB!
    for /f %%j in ('type %LOCAL_PATH_FILE% ^| %JQ% -r ".TEST2[].!SUB![] | keys[]"') do (
        set CONTENT=%%j
        ECHO  content path is !CONTENT!
    )
)

当前结果如下所示:

jq: error: syntax error, unexpected IDENT, expecting $end (Windows cmd shell quoting issues?) at <top-level>, line 1:
.TEST2[].B-B[] | keys[]
jq: 1 compile error
The process tried to write to a nonexistent pipe.

我知道它应该以某种方式通过配额来逃避它,但我无法找到它的正确语法。

也许有人可以帮助我:)

标签: jsonbatch-filecmdjq

解决方案


推荐阅读