使用JSON的JavaScript编程逻辑
我有一个JSON对象,如下所示:使用JSON的JavaScript编程逻辑,javascript,json,logic,Javascript,Json,Logic,我有一个JSON对象,如下所示: {"_id":"594fe31b3e158c0e70c9bb3e","deviceid":"342","alldata":"{\"deviceid\":\"342\",\"voltage\":\"14\",\"current\":\"9\",\"power\":\"92\",\"status\":\"1\"}","receivedon":"2017/06/25 21:51:47","__v":0} 问题是,当我试图输出obj.alldata.voltage时,
{"_id":"594fe31b3e158c0e70c9bb3e","deviceid":"342","alldata":"{\"deviceid\":\"342\",\"voltage\":\"14\",\"current\":\"9\",\"power\":\"92\",\"status\":\"1\"}","receivedon":"2017/06/25 21:51:47","__v":0}
问题是,当我试图输出obj.alldata.voltage
时,它只给出空白;这让我认为obj.alldata
是一个字符串,而不是JSON对象
当我打印obj.alldata
时,它会给出如下输出:
{"deviceid":"342","voltage":"14","current":"9","power":"92","status":"1"}
如何正确使用
obj.receivedon
,以及obj.alldata.voltage
?删除alldata
值的引号,这样它就不会被视为字符串
{ "_id": "594fe31b3e158c0e70c9bb3e", "deviceid": "342", "alldata": { "deviceid":"342","voltage":"14","current":"9","power":"92","status":"1"}, "receivedon": "2017/ 06 / 25 21: 51:47", "__v": 0 };
上面是一个散列或js对象,除了键“alldata”的值是json之外,您需要解析该json
data.alldata=JSON.parse(data.alldata)
在此之后,您的对象将如下所示
{ _id: "594fe31b3e158c0e70c9bb3e",
deviceid: "342", :
alldata: {
deviceid: "342",
voltage: "14",
current: "9",
power: "92",
status: "1"
},
receivedon: "2017/06/25 21:51:47", __v: 0
}
试试obj.alldata你应该在JS中使用parse()函数,数据就会变成一个JavaScript对象。“这让我觉得obj.alldata是一个字符串,而不是JSON对象”。没有JSON对象这样的东西。你必须了解你在和什么类型的人打交道。您要么有一个对象,要么有一个字符串(其中可能包含JSON,也可能不包含JSON)。您只能访问对象上的属性,而不能访问字符串上的属性。
{ _id: "594fe31b3e158c0e70c9bb3e",
deviceid: "342", :
alldata: {
deviceid: "342",
voltage: "14",
current: "9",
power: "92",
status: "1"
},
receivedon: "2017/06/25 21:51:47", __v: 0
}