Tim Cheang
Tim Cheang

Reputation: 1

How to get some data from a json.stringify?

res = JSON.parse(res);
var data = res.body;

res is shown as below enter image description here

[{"_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

Answers (1)

Mirko Vukušić
Mirko Vukušić

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

Related Questions