Jak mohu vložit data z JSON na proměnnou const v NodeJS pro použití API?

0

Otázka

Já jsem v současné době pracuje na NodeJS projektu, to bere data z JSON a pak používat to, aby se počasí věcí formě API, po které chci uložit do DB, už jsem požádal o to, a na tuto otázku mi pomohl, kterým se některé problémy, ale teď mám nějaké jiné, posílám data na konstantní, ale problém je, že nevím, proč dostávám chybu v JSON Parse, Chci použít lat a lon z JSON (mám sto údaje, coords) a vložte ji do const, jakákoliv pomoc pomůže, To je chyba, jdu

Successful connection
[]
undefined:1
^
SyntaxError: Unexpected token  in JSON at position 0
    at JSON.parse (<anonymous>)

tady je moje funkce, která vezme data z JSON a získává data z API:

async function calcWeather() {
  fs.readFile("./json/data.json","utf8", function (err, data) {
    if(err) throw err;
    data2 = JSON.parse(data);
  
    console.log(typeof data2);
    for (let item of data2) {
      
      let base = `https://api.openweathermap.org/data/2.5/weather?lat=${item.latjson}&lon=${item.lonjson}&appid=${api_key}&units=metric&lang=sp`;
      
      fetch(base)
        .then((responses) => {
          return responses.json();
        })
        .then((data) => {
          var myObject = {
            Id_Oficina: item.IdOficina,
            Humedad: data.main.humidity,
            Nubes: data.clouds.all,
            Sensacion: data.main.feels_like,
            Temperatura: data.main.temp,
            Descripcion: data.weather.description,
          };
          // validation and saving data to array
          if (myObject.Temperatura < 99) {
            lstValid.push(myObject);
          }
        });
    }
  });
  console.log(lstValid);
}

zde je JSON, kde jsem si data:

[
  {
    "latjson": 1,
    "lonjson": 1,
    "IdOficina": "1"
  },
  {
    "latjson": 2,
    "lonjson": 2,
    "IdOficina": "2"
  }
]

Myslím, že problém je v parse, ale já nechápu, co dělám špatně

javascript json node.js tedious
2021-11-23 22:24:08
1

Nejlepší odpověď

0

Od čtení souboru s fs.readFilejste stále řetězec a ne JavaScript objekt. Budete muset analyzovat je zcela v pořádku být schopen manipulovat obsah (ti se zdají být parsování první znak):

const fs = require('fs')
let rawdata = fs.readFileSync('./data.json')
let data = JSON.parse(rawdata)

Osobně si myslím, že je to tak jednodušší to vyžadují (není potřeba používat fs):

const jsonData = require('./json/data.json')

async function calcWeather() {
    for (let item of jsonData) {
       // ...
    }
}
2021-11-23 23:29:25

Jsem to změnit na async function calcWeather() { let rawdata = fs.readFileSync("./json/data.json"); let data2 = JSON.parse(rawdata); // fs.readFile("./json/data.json", "utf8", function (err, data) { // if (err) throw err; // data2 = JSON.parse(data /*[0]*/); // console.log(typeof data2); for (let item of data2) { let base = `https: a já jsem stále stejná zpráva chyba :c
Martín JF

To, co jsem řekl, bylo, že nepotřebujete readFile na všech. Pokud se vám require('./data.json')budete mít objekt. Budu upravit odpověď uvést své funkce jako příklad.
Diogo Simões

Mám nějaké problémy s require, můžu změnit, aby to import?
Martín JF

Nemyslím si, že je problém vůbec. Možná příspěvek zde na pastebin s všechny své funkce calcWeather a já mohou být schopni pomoci... jsi odstranil readFile kód? Ve kterém řádku je chyba se děje?
Diogo Simões

Jistě, tady je pastebin chyba vím, je, TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".json" s věcmi, které jsi mi řekl
Martín JF

Všimněte si, že je rozdíl mezi použitím require a čtení ze souboru JSON - require bude cache první data to čte a ne (automaticky) reagovat na změny JSON dat na souborový systém
traktor

Jen pro upřesnění, používáte dovozní nebo vyžadují ve zbytku kódu?
Diogo Simões

@traktor 's komentář je platný! Ale vzhledem k tomu, soubor se zdá být statické, řekl bych, vyžadují použití je v pořádku v tomto případě.
Diogo Simões

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................