2016-08-12 5 views
0

은 내가 데이터구문 에러 : 예기치 않은 토큰,

이 데이터를 저장

memored.store('driverList', list); 

을 내 기능입니다을 저장하는 노드 JS에서 사용 memored 라이브러리가 내 객체 하나의 문제가이는 GET입니다 예를

처럼 저장하는 목록 이 목록 가져 오기 후 코드

memored.read('driverList', function(err, list) { 
    var driver = list; 
}); 

입니다

var list = [ null, 
 
    null, 
 
    null, 
 
    null, 
 
    null, 
 
    null, 
 
    null, 
 
    null, 
 
    null, 
 
    null, 
 
    null, 
 
    null, 
 
    null, 
 
    null, 
 
    null, 
 
    '{"phonenumber":"123123","client":{"index":"103.240.34.250:61667","sock":{"_connecting":false,"_handle":{"fd":20,"writeQueueSize":0,"owner":"[Circular]","reading":true},"_readableState":{"highWaterMark":16384,"buffer":[],"length":0,"pipes":null,"pipesCount":0,"flowing":false,"ended":false,"endEmitted":false,"reading":true,"calledRead":true,"sync":false,"needReadable":true,"emittedReadable":false,"readableListening":false,"objectMode":false,"defaultEncoding":"utf8","ranOut":false,"awaitDrain":0,"readingMore":false,"decoder":null,"encoding":null},"readable":true,"domain":null,"_events":{},"_maxListeners":10,"_writableState":{"highWaterMark":16384,"objectMode":false,"needDrain":false,"ending":false,"ended":false,"finished":false,"decodeStrings":false,"defaultEncoding":"utf8","length":0,"writing":false,"sync":false,"bufferProcessing":false,"writecb":null,"writelen":0,"buffer":[],"errorEmitted":false},"writable":true,"allowHalfOpen":false,"onend":null,"destroyed":false,"bytesRead":24,"_bytesDispatched":2,"_pendingData":null,"_pendingEncoding":"","server":{"domain":null,"_events":{},"_maxListeners":10,"_connections":1,"connections":1,"_handle":{"fd":17,"writeQueueSize":0,"owner":"[Circular]"},"_usingSlaves":false,"_slaves":[],"allowHalfOpen":false,"_connectionKey":"4:0.0.0.0:25001"},"_peername":{"address":"103.240.34.250","family":"IPv4","port":61667},"_consuming":true},"_actualLength":0,"_msg":[2,114,116,101,115,116,64,103,109,97,105,108,46,99,111,109,124,114,97,118,105,110,97],"_written":0,"driver":"[Circular]"},"online":true,"onDuty":true,"latitude":0,"longitude":0,"vehicle":"Sedan","id":1056,"fullname":"test01 test01","pendingRides":{},"ride":null,"rpm":"0","licensePlate":"dri123","logintime":1471025147}' ] 
 

 
var data = list.filter(Boolean).shift(); 
 
var list = JSON.parse(data) 
 
    
 
console.log(list.id) 
 
for (var elementId in list) { 
 
       driver = list[elementId]; 
 
       
 
       if(!driver.online || !driver.onDuty) continue; 
 
       driverLists.push({ 
 
        id: driver.id, 
 
        latitude: driver.latitude, 
 
        longitude: driver.longitude, 
 
        fullname: driver.fullname, 
 
        rpm: driver.rpm, 
 
        vehicle: driver.vehicle, 
 
        licensePlate: driver.licensePlate, 
 
        logintime: driver.logintime 
 
       }); 
 
      } 
 
console.log(driverLists);

나는이 객체에서 driver.id 원하지만 내가 얻을 때의 나를 정의되지 않은 얻고 나는 또한 JSON.parse (값) 그래서 그 날 구문 에러를 얻을으로 시도 : 예기치 않은 토큰,

그래서 내가 어떻게이 문제

답변

0

driver에 대한 적절한 솔루션이있는 경우 ID 내게주세요 얻을 수있는 것은 배열이며, driver[15]은 문자열입니다.

그래서 아마도 JSON.parse(driver[15]).id을 원하십니까?

0

driver은 출력에 [] 대괄호로 표시되는 배열이며 객체는 실제로 문자열입니다.

먼저 당신이 어떤 이유로, 다음 문자열을 얻고 그것을 구문 분석이있는 모든 null 값을 제거, 값을

var data = driver.filter(Boolean).shift(); 
var parsed = JSON.parse(data); 
var id  = parsed.id; 

FIDDLE

+0

@trusharwidetech를 얻을 수 - 당신은 일을 찾고 거기에 있지 않습니다. 당신은 하나의 드라이버를 가지고 있지만'for ..in'을 사용하여 루프를 만들려고합니다. ** https : //jsfiddle.net/aarLcLe9/** – adeneo

+0

내가 드라이버를 1 개 이상 가지고있을 때 그때 일하는거야? –

+0

물론 데이터가 완전히 다르다면 드라이버 배열을 가지고 있다면 제대로 작동할까요? – adeneo

관련 문제