2016-09-12 5 views
0

텍스트 파일이 있습니다. 함수 내부의 파일을 읽고 JSON 객체로 반환해야합니다. 다음은 "예기치 않은 토큰 V의 JSON 위치 0에"오류를 던지고 있습니다.텍스트 파일을 읽고이를 노드 JS에서 JSON 객체로 반환하는 방법은 무엇입니까?

Server.js

fs.readfile('result.txt', 'utf8', function(err,data) { 
    if(err) throw err; 
    obj = JSON.parse(data); 
    console.log(obj); 
}); 

의 Result.txt는 다음

VO1과 같다 : 10 5 2

VO2 : 5 3 2

내가 사용할 수 없습니다 생각 JSON.parse를 직접 호출하십시오. 어떻게해야합니까?

+0

의 Result.txt의 내용은 무엇입니까? – Roberrrt

+0

result.txt를 살펴 보는 것이 도움이 될 것입니다. – kenda

+1

'.txt' 파일이 문자열로 가져 오기 때문에, 할 수 없습니다. iirc. json으로 변환 할 데이터를위한 자체 구문 분석기를 작성해야합니다. – Roberrrt

답변

-1

귀하의 result.txt는 json (으)로 유효하지 않습니다.

유효한 json은 다음과 같습니다.

{ 
    "VO1": [10, 5, 2], 
    "VO2": [5, 3, 2] 
} 
1

가정 다음

모든 라인이 개행 문자에 의해 분리된다

(\n)

모든 라인이 그 앞 부분은 키이다 : 의해 분리되고 그 뒤에있는 부분은 키값을 배열로 나타내야하는 (공백)으로 구분 된 문자열입니다. 다음은

은 형식 작동합니다 :

fs.readfile('result.txt', 'utf8', function(err,data) { 
    if(err) throw err; 
    let obj = {}; 
    let splitted = data.toString().split("\n"); 
    for (let i = 0; i<splitted.length; i++) { 
     let splitLine = splitted[i].split(":"); 
     obj[splitLine[0]] = obj.splittLine[1].split(" "); 
    } 
    console.log(obj); 
}); 
+0

splitLine에서 알 수없는 식별자로 오류가 발생했습니다. – Bharg

+0

그래서 일부 줄에는 키, 값 또는':'이 없습니다. @Bharg 객체에 값을 할당하기 전에 검사를 추가하십시오. – baao

0

당신은 직접 텍스트 파일을 구문 분석 할 필요가있다. RegExp 또는 다른 방법을 사용하여 값을 추출하고 객체를 생성 한 다음 JSON.stringify을 생성 할 수 있습니다.

0

답을 제공 한 Baao에게 감사드립니다. 솔루션의 또 다른 맛으로

, 당신은 어떤이없는 경우 ":"파일 아마 목록은 그럴 수 항상 같은 키 코드 :

var data = fs.readFileSync(pathAndFilename); 
var testData = {}; 
var splitList = data.toString().split('\r\n'); 
for (var i = 0; i < splitList.length; i++) { 
    testData['fileNumber' + i.toString()] = splitList[i]; 
} 
관련 문제