2017-05-18 4 views
-1

노드 js를 사용하여 특정 값에 대해 여러 json 파일을 구문 분석하여 아래 (2)의 배열을 생성합니다.json 배열을 통해 구문 분석하는 방법은 무엇입니까?

내 json 파일에는 상태가 isAvailable 또는 undefined 인 ID 목록이 있습니다. enter image description here

그래서 내 코드에서는 모든 json 파일을 구문 분석하지만 첫 번째 ID 만 찾고 그림에서 벨로우 로그의 상태를 확인합니다. 참이면 ID는 사용할 수 있음을 의미합니다. 파일 이름을 볼 수 있듯이 json이 제작 된 날짜와 시간입니다.

그래서 내가 원하는 것은 기능이나 간단한 것을 쓰는 것입니다. 그림에서 볼 수있는 배열을 통해 간다. 예 : '2017-03-17T11 : 36 + 01 : 39 우리는 내가 가능한 상태

("{파일 이름으로 첫 번째 파일 이름을 복구 싶어, 상태가 첫 번째 파일에 사용할 것을 알 수 있습니다 : 00 ' 상태 : 사용 가능} "상태가 사용할 수있는 중지 할 때

, 우리의 예를 여기 ({fileName에 다음과 같습니다'2017-04-06T11 : 19 : 17 + 02 : 00 ', 내용 : undefined}) get :

{파일 이름 : '2017-04-06T11 : 19 : 17 + 02 : 00, 상태 : 사용할 수없는} (2) 그래서 여기 enter image description here

내가이 배열을 생성 내 코드의 일부

입니다 :

Promise.mapSeries(filenames, function(fileName) { 
     var contents = fs 
     .readFileAsync("./availibility/" + fileName, "utf8") 
     .catch(function ignore() {}); 
     return Promise.join(contents, function(contents) { 
     return { 
      fileName, 
      contents 
     }; 
     }); 
    }).each(function(eachfile) { 
     if(eachfile.contents){ 
     jsonobject = JSON.parse(eachfile.contents); 
     if(jsonobject && jsonobject.hasOwnProperty('messages'))   
     // console.log(jsonobject.messages[0].message.results[2]); 
     eachfile.contents = jsonobject.messages[0].message.results[1].isAvailable; 
     } 
     eachfile.fileName = eachfile.fileName.substring('revision_'.length,(eachfile.fileName.length-5)); 
    console.log(eachfile); 

    }) 

월 누군가가

+0

무엇이 잘못되고 응용 프로그램의 컨텍스트가 무엇인지 설명하지 않았습니다. 프로세스가 원하는 것처럼 작동하는 모습을 보여주십시오. – Glubus

+0

좋아요, 나는 더 잘 설명하려고 노력할 것입니다. 피드백에 감사드립니다. –

+0

더 나아 졌습니까? –

답변

1

당신이 있다고 가정 나를

감사합니다 도와 줘요 배열 :

[ 
    { 
     filename : "2017-03-23 00:00:00", 
     contents : true 
    }, 
    ... 
    { 
     filename : "2017-03-23 00:00:00", 
     contents : undefined 
    }, 
    { 
     filename : "2017-03-23 00:00:00", 
     contents : undefined 
    }, 
    { 
     filename : "2017-03-23 00:00:00", 
     contents : true 
    } 
] 

여기서 ...는 내용 값이 true 인 객체의 긴 스트림을 나타냅니다. 당신의 모습 결과를 의미 같은 내용 값이 필연적 인 목적이없는 개체의 목록과 함께 종료 할 :

[ 
    { 
     filename : "2017-03-23 00:00:00", 
     contents : true 
    }, 
    { 
     filename : "2017-03-23 00:00:00", 
     contents : undefined 
    }, 
    { 
     filename : "2017-03-23 00:00:00", 
     contents : true 
    } 
] 

임 이것이 내가 익숙 자바 스크립트 프레임 워크이기 때문에 jQuery를 사용하는 것, 그러나 당신은 당신이 사용하고있는 어떤 프레임 워크로도 그것을 쉽게 번역 할 수 있어야합니다.

function doit(dataArray) { 

    var resultList = []; 
    var currentContent = ""; 
    $.each(dataArray, function(index, value) { 
     if(currentContent != value.content) { 
      resultList.push(value); 
      currentContent = value.content; 
     } 
    }); 

    console.log(resultList); 
} 

그림의 데이터처럼 보이는 배열이 필요하지만 모든 행을 인쇄한다는 점에 유의하십시오. 이러한 행을 새 배열에 추가 한 다음이 배열을이 함수에 전달해야 할 수 있습니다.

관련 문제