2016-06-21 59 views
-1
var data = {};                        
var data_tester;             
data.payload ={ 
    "age" : "24",               
    "hometown" : "Missoula, MT",               
    "gender" : "male" 
},               
data_tester = JSON.parse(data.payload);  

return data_tester.age;  

這是我的程序,我想弄清楚如何從這個json中提取年齡值。我使用IBM bluemix IOT沃森, 我得到的錯誤是:如何從節點紅得到json的特定值?

SyntaxError: undefined:1 [object Object]^Unexpected token o

+0

你有data.payload'後'逗號('')。它應該是分號(';')。另外,您不需要執行'JSON.parse(data.payload)'。這不是JSON,它是一個對象。它已經被「解析」了。 –

+0

msg.payload = { 「age」:「24」, 「hometown」:「Missoula,MT」, 「gender」:「male」 }; return msg.payload.age; 更改程序後,我得到TypeError:無法分配到只讀屬性'_msgid'of 24 –

+0

這完全是一個不同的問題,可能與此代碼沒有直接關係。嘗試自己調試它,然後如果您遇到困難,請在此處提出另一個問題,具體說明如何重新創建它以及如何嘗試解決它。 –

回答

1

你必須從功能節點返回的消息對象。你的代碼只返回age的值,這只是一個int

您描述的錯誤是因爲Node-RED嘗試向輸出添加一些內部狀態(_msgid),並且因爲它不是對象。做事的正確方法是返回整個數據對象,例如

var data = {}; 
data.payload ={ 
    "age" : "24", 
    "hometown" : "Missoula, MT", 
    "gender" : "male" 
}; 
return data; 

,或者如果你真的只是想返回一個整數值:

var data = {}; 
data.payload = 24; 
return data;