JSON中的 "@" 符号是什么意思?

5
我正在使用以下库将XML转换为JSON:https://github.com/Leonidas-from-XIV/node-xml2js。转换后,控制台记录如下:
{ '@':
   { RaceDayDate: '2012-03-15T00:00:00',
     Year: '2012',
     Month: '3',
     Day: '15',
     DayOfTheWeek: 'Thursday',
     MonthLong: 'March',
     IsCurrentDay: '1',
     IsPresaleMeeting: '0',
     ServerTime: '2012-03-15T19:48:47.840' },
  PresaleRaceDate: [ { '@': [Object] }, { '@': [Object] }, { '@': [Object] } ],
  Meeting:
   [ { '@': [Object], Pool: [Object], Race: [Object] },
     { '@': [Object], Pool: [Object], Race: [Object] },
     { '@': [Object], Pool: [Object], Race: [Object] },

@符号代表着JavaScript中一个特殊的属性,叫做“computed property names” 。如果要访问result对象中的RaceDayDate、Year、Month属性,应该使用result['RaceDayDate']、result['Year']、result['Month']等语法,而不是result.@。

5个回答

11

'@' 就像任何其他字符串一样。在 JavaScript 中,您可以通过下面的方式访问它:

result['@']

还要注意的是,输入不是有效的JSON格式,因为它在许多字典键周围缺少引号,使用单引号而不是双引号,并以逗号结尾。


1

我不确定这是否与此示例相关,但我目前正在集成一个API,允许您传递xml或json; 在json消息中,存储为xml版本的该消息中属性的任何字段都以“@”字符作为前缀 - 我认为这是因为将json转换为xml进行处理,并且他们用于此的任何工具都使用@来区分元素和属性。


1
尝试使用result['@'].RaceDayDate

1
如上面的“Clarkeye”所提到的,我有一些标签带有“@”前缀(以下是示例数据)。这些是该消息的xml版本中的属性。我怀疑转换工具添加了这个前缀。 json示例数据
{
  "@context": "\/v1\/contexts\/Book",
  "@type": "Recipe",
  "id": "12136",
  "note": [
    {
      "@id": "\/v1\/terms\/331",
      "@type": "SQL",
      "id": 331,
      "display": "SQL",
      "taxonomy": "post_tag"
    }
  ]

0

对于JSON来说,它没有特殊的意义。

这个特定的数据将其用作键字符串。要想知道为什么,你必须了解数据的含义。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接