EDIT:我把单引号改成了双引号,linters没有抱怨。
我把这个放进了jsonlint.com,我得到了这个错误:
Error: Parse error on line 1:
{ 'bandwidth_in': {
--^
Expecting 'STRING', '}', got 'undefined'
其他json linter也有类似的结果。最初,数值是空的,所以我把它们用单引号括起来,以消除jq
错误:
parse error: Invalid numeric literal at line 2, column 16
但我还是能理解jq。
我没有看到任何未定义的键,我缺少什么?
{
'bandwidth_in': {
'GE4': {
'value': '16292',
'tree': {
'2': {
'name': 'GE4',
'key': 'GE4',
'attributes': {
'snmp_index': 'GE4'
}
}
},
'attributes': {
'bandwidth': '15157250.0'
}
}
},
'bandwidth_out': {
'GE4': {
'value': '14616',
'tree': {
'2': {
'name': 'GE4',
'key': 'GE4',
'attributes': {
'snmp_index': 'GE4'
}
}
},
'attributes': {
'bandwidth': '15150500.0'
}
}
},
'jitter_in': {
'GE4': {
'value': '0.0',
'tree': {
'2': {
'name': 'GE4',
'key': 'GE4'
}
}
}
},
'jitter_out': {
'GE4': {
'value': '0.002',
'tree': {
'2': {
'name': 'GE4',
'key': 'GE4'
}
}
}
},
'latency_in': {
'GE4': {
'value': '0.001',
'tree': {
'2': {
'name': 'GE4',
'key': 'GE4'
}
}
}
},
'latency_out': {
'GE4': {
'value': '0.003',
'tree': {
'2': {
'name': 'GE4',
'key': 'GE4'
}
}
}
},
'packetloss_in': {
'GE4': {
'value': '0',
'tree': {
'2': {
'name': 'GE4',
'key': 'GE4'
}
}
}
},
'packetloss_out': {
'GE4': {
'value': '0',
'tree': {
'2': {
'name': 'GE4',
'key': 'GE4'
}
}
}
}
}
我还在网上看到了一个参考,即不允许使用裸数字作为键,可以公平地说,任何具有非字符串键的JSON都不应该通过测试吗?
正如雷米·拉博所说的
字符串不支持单引号作为分隔符,只支持双引号。
当您有一个包含内联JSON的字符串时,您有一些选项:
外部双引号和内部转义双引号
sJson=";{"键":"值"};
外部单引号
sJson="{"键":"值"}">