我在bash中运行了一个ECHO命令,我看到了一些意外的结果.

运行时:

echo "{
    "outputs": {
      "result": "[{\"directory\":\"mydir\",\"somekey\":\"somevalue\"}]"
    },
    "outcome": "success",
    "conclusion": "success"
  }"

输出为:

{
    outputs: {
      result: ["directory":"mydir"]
    },
    outcome: success,
    conclusion: success
  } {
    outputs: {
      result: ["somekey":"somevalue"]
    },
    outcome: success,
    conclusion: success
  }

我知道结果键不是有效的json,但为什么输出似乎迭代结果数组中的值并输出对象?Bash或回应命令端出现这种情况的原因是什么?

如果我go 掉结果数组开头和结尾的双引号,它会像预期的那样输出整个json BLOB,但奇怪的是,当json格式不正确时,我为什么会得到另一个输出.

推荐答案

你看到的是brace expansion.从最简单的Angular 看,

$ echo {a,b}
a b

如果大括号嵌入到字符串中,则会重复整个字符串:

$ echo prefix{a,b}suffix
prefixasuffix prefixbsuffix

重要的是,当大括号被引用时,扩展不会发生:

$ echo "prefix{a,b}suffix"
prefix{a,b}suffix

在你的情况下,prefix

"{
    "outputs": {
      "result": "[

a

\"directory\":\"mydir\"

b

\"somekey\":\"somevalue\"

suffix

]"
    },
    "outcome": "success",
    "conclusion": "success"
  }"

Json相关问答推荐

嵌套自定义解组

我如何知道TJSONNumber是double还是double?

Flutter -控制器问题-JSON API

无法访问id的第三级json

当列为空时从 SQL 获取 JSON

Golang jsonrpc2 服务器在哪里监听?

Vega-Lite规范:尽管在规范中提供了数据,但显示空图表

使用jq根据对象中键的值查找对象

Golang gin接收json数据和图片

判断 JSON 中的对象,而不是条件中提到的对象

使用 Javascript 判断 JSON 对象是否包含值

为什么在我们有 json_encode 时使用 CJSON 编码

Spring MVC 4:application/json内容类型设置不正确

如何获取json格式的KendoGrid显示数据?

从 HttpResponse 获取 json

jQuery fullcalendar 发送自定义参数并使用 JSON 刷新日历

JSON.stringify 不会转义?

我们可以使用 JSON 作为数据库吗?

如何在 Django JSONField 数据上聚合(最小/最大等)?

如何从 MySQL 中检索 JSON 数据?