如何使用jsawk从非字母数字字符的json对象的属性中提取值

How to use jsawk to extract value from property of json object with non alpha numeric characters

本文关键字:对象 json 属性 提取 数字字符 jsawk 何使用      更新时间:2023-09-26

文件/tmp/t 中的json文件内容示例

 [
    {
      "name:first"   : "trevor",
      "last"    : "wellington",
      "from"    : "england",
      "age"     : 52,
      "sports"  : [ "rugby", "badmitton", "snooker" ]
    },
    {
      "name:first"   : "yoni",
      "last"    : "halevi",
      "from"    : "israel",
      "age"     : 26,
      "sports"  : [ "soccer", "windsurfing" ]
    },
    {
      "name:first"   : "cory",
      "last"    : "parker",
      "from"    : "united states",
      "age"     : 31,
      "sports"  : [ "windsurfing", "baseball", "extreeeeme kayaking" ]
    }
  ]

这很好cat /tmp/t | jsawk -n 'out(this.last)'

但事实并非如此cat test.json | jsawk -n 'out(this.name:first)'

可能与:选择键中带有冒号的JSON对象
和如何使用jQuery访问这些奇怪的JSON项?

但是cat test.json | jsawk -n 'out(this.name[':first'])'也不起作用

开始:

... | jsawk -n 'out(this["name:first"])'

this.name:first不起作用,因为空的:不能在对象属性中。

例如,给定这个JavaScript对象:

x = {
  "name:first"   : "cory",
  "last"    : "parker",
  "from"    : "united states",
  "age"     : 31,
  "sports"  : [ "windsurfing", "baseball", "extreeeeme kayaking" ]
}

这些是有效的:

  • x.lastx['last']
  • x.fromx['from']
  • 但只有x['name:first']x.name:first不是)