访问没有标签的JSON数据

时间:2014-11-19 14:13:50

标签: javascript json

var listCompleteInjections = [
    {"05-06-2014",0.5},
    {"16-06-2014",0.5},
    {"20-06-2014",0.5}
];

这是我从设备收到的数据片段。它只有键和值,但没有标签表示相同。由于缺少标签,我无法访问密钥和值。请帮忙。

P.S。数据对应于"日期"和" Dosage"。

3 个答案:

答案 0 :(得分:3)

鉴于json无效。

检查this jsonlintjsonviewer

给定字符串不是json所以你无法读取数据。

如果你有未知的key->值对,那么你也可以访问json:

 var p = {
        "p1": "value1",
        "p2": "value2",
        "p3": "value3"
 };

for (var key in p) {
  if (p.hasOwnProperty(key)) {
    alert(key + " -> " + p[key]);
  }
} 

答案 1 :(得分:1)

这应该有效:

for(var key in listCompleteInjections[0]) {
    console.log('Value: '+listCompleteInjections[key]);
}

你也可以循环遍历你的子数组:

for(var key in listCompleteInjections[0]) {
    for(var subKey in listCompleteInjections[key]) {
        console.log('Value: '+listCompleteInjections[key][subKey]);
    }
}

答案 2 :(得分:0)

正如Hitesh所说,它不是有效的JSON,但它几乎有效的JSON。我假设你收到这个数据作为字符串?如果是这样,您可以使用String.replace()和正则表达式按摩使有效。

var listCompleteInjections = '[\
    {"05-06-2014",0.5},\
    {"16-06-2014",0.5},\
    {"20-06-2014",0.5}\
]'.replace(/",/g, '":');

现在你可以JSON.parse()了。

function log(what) { document.getElementById('log').value += what + '\n'; }

var listCompleteInjections = '[\
    {"05-06-2014",0.5},\
    {"16-06-2014",0.5},\
    {"20-06-2014",0.5}\
]'.replace(/",/g, '":');

log('listCompleteInjections as massaged string:');
log(listCompleteInjections + '\n');

var obj = JSON.parse(listCompleteInjections);

log('obj[0]["05-06-2014"] = ' + obj[0]["05-06-2014"]);
#log {
    width: 100%;
    height: 300px;
}
<textarea id="log"></textarea>