2016-11-26 37 views
0

私はノードで新しいです、私は天気のコマンドラインアプリケーションを開発すると思っていましたが、私はajaxリクエストに問題があることを発見しました。通常jqueryの$ .ajaxを使用します。それは動作しません(私はjqueryを要求しようとしました)。私は別のモジュールでこの問題を解決しました。NodeJs:ファイルを書き込むことができません

は今、問題がある:私はcoords.jsonにJSON情報を印刷しようと次&「\ n」はどこでも、文字列の一部の「\」がある読み取りJSONモジュールでそれを読んだとき、私はregexとfsモジュールと交換しようとしましたが、ファイルを書き換えません...なぜですか?

ここでは完全なコード:

// 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) 
    }); 

}); 

やファイルに出力されている:

// 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'で何もしません。あなたの 'fs.readFile()'は 'writeJson()'関数が終了する前に実行されます。 – 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

\されています引用符をエスケープして、文字列を終了しないようにします。彼らは何にも影響を与えるべきではなく、実際には必要です。あなたは正規表現なしでそれを試してみましたか?実際にそれが削除された場合、それは物事を壊す可能性があります。

関連する問題