2016-09-03 2 views
0

MQTT를 통해 사물 네트워크에서 데이터를 가져옵니다. 데이터를 파싱하는 데 문제가 있으며 별도의 변수에 데이터의 각 부분을 볼 수 있습니다.노드 레드 - JSON 구문 분석이 작동하지 않습니다.

Node-Red Flow

이것은 디버그에서 지정된 출력 :

{"payload":"Gc4FaAAAFwBoAA==","port":223,"counter":4527,"dev_eui":"00DEAD00BEEF0002","metadata": 
[{"frequency":902.3,"datarate":"SF10BW125","codingrate":"4/5","gateway_timestamp":1299905004,"channel":0,"server_time":"2016-09- 

03T18:40:46.106713105Z","rssi":-31,"lsnr":12.3,"rfchain":0,"crc":1,"modulation": 
"LORA","gateway_eui":"1234567887654321","altitude":0,"longitude":0,"latitude":0} 
]} 

parsingJson의 코드 :

var data = JSON.parse(msg.payload); 
msg.payload={}; 
msg.payload = data.metadata.rssi; 
msg.payload = data.payload; 
msg.payload = data.payload.split(1,3); 

return msg; 
+0

오류를 게시 하시겠습니까? – pinkpanther

+0

예상되는 결과는 무엇입니까? – hardillb

+0

당신은 msg.payload에 3 가지 다른 것들을 할당합니다 - 마지막 것만 효과가있을 수 있습니다. 어쨌든 msg.metadata의 내용은 목록에 있으므로 목록의 첫 번째 항목의 내용에 액세스하려면'msg.metadata [0] .rssi'와 같이 목록을 색인해야합니다. – barny

답변

0

먼저 업의 변환 귀찮게하지 않습니다 함수 노드의 JSON 문자열에 미리 설치된 특정 표준이 있습니다. 노드 (JSON 노드라는 이름으로, JSON 또는 JSON으로 문자열을 입력을 기반으로 한 sting으로 변환 함)를 사용합니다.

두 번째로 msg.payload을 세 번 설정하면 마지막 부분 만 얻을 수 있습니다.

셋째로 data.metadata은 배열이므로 액세스하려는 배열의 항목을 지정해야합니다. data.metatdata[0].rssi

출력이 아무 것도 연결되어 있지 않으므로 출력을 기대하고 있습니까?

+0

JSON의 특정 부분을 MySQL DB에 삽입하려고합니다. 변수에 특정 부분을 할당하고 SQL 문에서 변수를 호출하기를 원했지만 첫 번째 단계는 데이터를 출력하는 것이 었습니다. 그래서 포트와 경도를 출력하려면 어떻게해야합니까? – asobs

+0

SO가 적합하기 때문에 단계별 도움이 더 필요하다. 누군가가 이것을 통해 당신을 안내 할 수있는 Node-RED 포럼에서 이것을 묻습니다. https://groups.google.com/forum/#!forum/node-red – hardillb

관련 문제