2017-02-23 236 views
0
res = JSON.parse(res); 
var data = res.body; 

Рез показан ниже enter image description hereКак получить некоторые данные из json.stringify?

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

Вопрос: Как я могу получить "высота", "температура (23)" например ?

+0

[Доступ к свойствам объекта] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Property_Accessors) должна быть одной из первых основ для изучения. – Teemu

+0

'res [0] .place.altitude' попробуйте это –

ответ

1

Не зная больше о вашей модели данных, это не то, что я сделал бы, но (с большим количеством допущений), это показывает способ сглаживания ваших данных, и тогда ваш ответ будет простым.

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]))

Так в основном здесь есть функция, которая будет выравниваться ввод комплексных мер и сохранить его measures свойство объекта ввода. Я думаю, что это не проблема для доступа к ним из объекта, отформатированного таким образом.

+0

umm, thx first. Но такие, как «1487682683», не являются фиксированным значением .. поэтому мы не можем использовать точное значение напрямую. –

+0

Затем вам нужно указать более подробную информацию об этом значении. Случайно ли это связано с некоторыми другими данными, которые у вас есть, и т. Д. SAme для таких значений, как «02: 00: 00: 13: 65: 78». Я имею в виду, что мы можем перебирать свойства и находить их, но это будет просто ресурс, чтобы сделать это только потому, что данные не заданы в вопросе. –

+0

console.log ('высота:', item.place.altitude) ТипError: Невозможно прочитать свойство «высота» неопределенного на IncomingMessage. (/Users/gaythree/Desktop/ucla/getpublicdata.js:48:35) на emitNone (events.js: 91: 20) на IncomingMessage.emit (events.js: 186: 7) на endReadableNT (_stream_readable .js: 974: 12) на _combinedTickCallback (internal/process/next_tick.js: 74: 11) at process._tickCallback (internal/process/next_tick.js: 98: 9) –