2016-11-26 6 views
0

연습 중 날씨 명령 줄 응용 프로그램을 개발할 것으로 생각되었지만 노드에서 새로운데 아약스 요청에 문제가 있음을 확인했습니다. jquery의 $ .ajax를 사용하지만 그것은 작동하지 않습니다, (나는 jquery를 요구하려고 시도했습니다). 다른 모듈로이 문제를 해결했습니다.NodeJs : 파일을 쓸 수 없습니다.

이제 문제는 : 내가 coords.json에 JSON 정보를 인쇄하려고 다음 & "\ n"사방 문자열의 일부 "\"가 있습니다 읽기 JSON 모듈을 읽을 때, 정규식 및 fs 모듈로 바꾸려고했지만 파일을 다시 쓰지 않습니다 ... 왜? 여기

전체 코드 :

// coords.json 

"{\"ip\":\"**.**.**.**\",\"country_code\":\"IT\",\"country_name\":\"Italy\",\"region_code\":\"62\",\"region_name\":\"Latium\",\"city\":\"Rome\",\"zip_code\":\"00119\",\"time_zone\":\"Europe/Rome\",\"latitude\":**.*,\"longitude\":**.**\"metro_code\":0}\n" 

하지만 난 콘솔에 인쇄 할 경우는 ...

+1

코드는' –

+0

을 coords.json'으로 아무것도하지 않는 당신은 비동기 문제가 있습니다. 'writeJson()'함수가 끝나기 전에'fs.readFile()'이 실행됩니다. – jfriend00

+0

예이 코드에서 알 수있는 코드는 나타나지 않습니다. test.json은 같은 파일입니다. – rawnly

답변

2

정말 JSON.parse를 사용하는 것이 좋습니다. 그것은 당신이 사용할 수있는 JSON을 구문 분석하고 변수에 넣어 것입니다

fs.readFile('test.json', 'utf8', function (err,data) { 
    data = JSON.parse(data); // Yay you can use anything from the JSON 
} 
0

의 \입니다 정상 :

// index.js 
// modules 
const program = require('commander'); 
const clear = require('clear'); 
const chalk = require('chalk'); 
const request = require('ajax-request'); 
const fs = require('fs'); 

const json = require('read-data').json; 
const writeJson = require('write-json'); 

// Forecast.io Key 
const key = "*************"; 
const freegeoip = "http://freegeoip.net/json/"; 

let latitude = 0, 
    longitude = 0 ; 

// forecast.io api url 
const url = `https://api.darksky.net/forecast/${key}/${latitude},${longitude}`; 

// initialize myData with the freegeoip datas 
let myData = request({ 
    url: 'http://freegeoip.net/json/', 
    method: 'GET', 
    data: { 
    format: 'json' 
    }, 
}, function(err, res, body) { 
    writeJson('test.json', body, function(err) { 
    if (err) console.log(err); 
    }); 
}); 

fs.readFile('test.json', 'utf8', function (err,data) { 
    let result = data.replace(/[\\~#%&*<>?|\-]/g, ''); 
    fs.writeFile('test.json', result, 'utf8', function (err) { 
     if (err) return console.log(err); 
     // if i do this is normal json 
     // console.log(result) 
    }); 

}); 

및 파일의 출력은 따옴표를 이스케이프하여 문자열을 끝내지 않도록합니다. 그들은 어떤 영향을 미치지 않아야하며 실제로 필요합니다. 당신은 정규식없이 그것을 시도 했습니까? 그것은 실제로 그것을 제거하면 그것은 물건을 깰 수 있습니다.

관련 문제