/ / SyntaxError: token imprevisto. JSON.stringify (database_params) - json, node.js

SyntaxError: token imprevisto. JSON.stringify (database_params) - json, node.js

se avvio la mia applicazione di nodo ottengo una sintassierrore. Ma perché, dopo aver usato jshint, controlla il mio codice e mi mostra l'errore in JSON.stringify. Ho provato a risolvere questo problema con questo metodo JSON: stringify, ma il codice non funziona di nuovo. Conosci qualche metodo per risolvere questo problema e perché JSON.stringify non è una sintassi corretta.

function updateMarketPrices() {

// BITSKINS API REQUEST FRESH PRICES
request("https://bitskins.com/api/v1/get_all_item_prices/?api_key="+ API_KEYBIT+"&code="+bit_code+"", function(error, response, body) {
prices = JSON.parse(body);

if(prices.status != "success") {
logger.warn("Loaded fresh prices");
// CHANGE SITE LOCATION
if(fs.existsSync("prices.txt")){
// CHANGE SITE LOCATION
prices = JSON.parse(fs.readFileSync("prices.txt"));
logger.warn("Prices loaded from cache");
} else {
logger.error("No prices in cache");
process.exit(0);
}
} else {

var newprice = JSON.parse("{"response":{"success":1,"current_time":1464567644,"items":{}}}");

prices.prices.forEach(function(item) {
newprice.response.items["migration_time_validation"] = {JSON.stringify(database_params)};
newprice.response.items[item.market_hash_name] = {
"value": item.price*1000
}
});

// CHANGE SITE LOCATION
fs.writeFileSync("prices.txt", JSON.stringify(newprice));
logger.trace("New prices loaded");
}
});
}

risposte:

0 per risposta № 1

Posso vedere che stai cercando di utilizzare JSON.stringify () all'interno di una dichiarazione oggetto nel tuo ciclo foreach.

Chiamare il metodo JSON.stringify al di fuori della dichiarazione dell'oggetto, assegnarlo a una variabile e utilizzarlo.

Il tuo codice dovrebbe finire in questo modo:

prices.prices.forEach(function (item) {
var dbParams = JSON.stringify(database_params);

newprice.response.items["migration_time_validation"] = {
dbParams
};
newprice.response.items[item.market_hash_name] = {
"value": item.price * 1000
}
});

In alternativa, se si desidera semplicemente inserire il JSON nel database, senza avvolgerlo in un oggetto JavaScript, è sufficiente rimuovere le parentesi come segue:

prices.prices.forEach(function (item) {
newprice.response.items["migration_time_validation"] = JSON.stringify(database_params);

newprice.response.items[item.market_hash_name] = {
"value": item.price * 1000
}
});