Reputation: 1
res = JSON.parse(res);
var data = res.body;
[{"_id":"70:ee:50:13:81:a4",
"place":
{ "location":[113.551302,22.193787],
"altitude":29,
"timezone":"Asia/Macau"},
"mark":8,
"measures":
{"02:00:00:13:65:78":
{"res":
{"1487682683":[23,76]},
"type":["temperature","humidity"]},
"70:ee:50:13:81:a4":
{"res":
{"1487682691":[1017.1]},
"type":["pressure"]}},
"modules":["02:00:00:13:65:78"],
"module_types":{"02:00:00:13:65:78":"NAModule1"}}]
Question: How can I get "altitude", "temperature(23)" e.g. ?
Upvotes: 0
Views: 307
Reputation: 2121
Without knowing more about your data model, this is not something I'd do but (with a lot of assumptions) it shows a way to flatten your data and then your answer will be simple.
var res = [{
"_id": "70:ee:50:13:81:a4",
"place": {
"location": [113.551302, 22.193787],
"altitude": 29,
"timezone": "Asia/Macau"
},
"mark": 8,
"measures": {
"02:00:00:13:65:78": {
"res": {
"1487682683": [23, 76]
},
"type": ["temperature", "humidity"]
},
"70:ee:50:13:81:a4": {
"res": {
"1487682691": [1017.1]
},
"type": ["pressure"]
}
},
"modules": ["02:00:00:13:65:78"],
"module_types": {
"02:00:00:13:65:78": "NAModule1"
}
}]
function flattenMeasures(res) {
let measures = res.measures
let flatMeasures = {}
Object.keys(measures).map(key => {
let curMeasure = measures[key]
let curVals = curMeasure.res[Object.keys(curMeasure.res)[0]]
let curTypes = curMeasure.type
curTypes.map((type,i)=>flatMeasures[type]=curVals[i])
})
res.measures = flatMeasures
return res
}
console.log(flattenMeasures(res[0]))
So basically here is a function that will flatten your complex measures input and store it to measures
property of an input object. I guess it's not a problem to access them from object formatted in this way.
Upvotes: 1