Reagovat načíst z Go/Golang server analýze dat v nečekané JSON formátu na číslo

0

Otázka

Já jsem vytváření webové aplikace, která používá Go server sloužit dat do aplikace Reagovat.

Při výstavbě můj server, sledoval jsem návod poskytována Jít docs (https://golang.org/doc/tutorial/web-service-gin). Můj kód je velmi podobný kódu, a jsem se dostat očekávané výsledky, když jsem používat curl.

[
  {
    "id":0,
    "date":"2021-11-21T12:00:00Z",
    "rentedTo":"Bob",
    "rentedBy":"Jim"
  },
  //etc...

Když jsem se použít Reagovat fetch API, nicméně, moje výsledky v nečekané podobě.

fetch('http://localhost:8080/rentals')
.then((response)=> {
  if (response.ok) {
    return response.json();
  }
  throw response;
.then((jsonArr) => {
  handleRentalsData(jsonArr)
  })
.catch((error) => {
  console.error("Error fetching data: ", error);
});

Když Jsem console.log(jsonArr)prohlížeč hlásí následující:

Array(3) [ {...},{...},{...} ]
//Expanding this object via the console shows the following information:
---> 0: Object { id: 0, date: "2021-11-21T12:00:00Z", rentedTo: "Bob", ... } 
---> 1: Object { id: 1, date: "2021-11-22T12:00:00Z", rentedTo: "Bob", ... }
---> 2: Object { id: 2, date: "2021-11-23T12:00:00Z", rentedTo: "Bob", ... }

Tyto indexy (a prohlížeče štítku) je uvedeno, že data byla nyní v podobě Pole, bral jsem to jako takovou.

Pokusil jsem se smyčka přes toto pole analyzovat json řetězce uvnitř, ale JSON.parse(data) produkuje pouze číslice (0, 1 a 2 resp.), spíše než k produkci předmětů, tak, jak jsem očekávala.

for (const json in jsonArr){
  console.log(typeof json);            //string
  const rentalObj = JSON.parse(json);
  console.log(typeof rentalObj);       //number
  console.log(rentalObj);              //0, 1, and 2 respectively
  console.log(rentalObj.date);         //undefined, because rentalObj is now a number.
}

Jsem udělal nějaké vyhledávání, a slyšel, že indexy pole data přišel, může být příčinou problému, tak jsem se snažil analyzovat s reviver funkce, stejně.

for (const json in jsonArr){
  console.log(typeof json);            //string
  const rentalObj = JSON.parse(json, (key, value) => {
    console.log(key);                  //<empty string>
    console.log(value);                //0, 1, and 2
    return(value);
  });
  console.log(typeof rentalObj);       //number
  console.log(rentalObj);              //0, 1, and 2 respectively
  console.log(rentalObj.date);         //undefined
}

Snaží JSON.parse(jsonArr) vyvolá chybu, jak se očekávalo. Jsem v koncích. Proč to parse(index n) číslo? Jak mohu extrahovat Objekty uvnitř Pole, při analýze (nebo printing) struny uvnitř pole produkuje pouze čísla?

fetch-api go javascript json
2021-11-23 04:47:53
1

Nejlepší odpověď

1

Na json hodnota v for (const json in jsonArr) { bude nastavena na "vyčíslitelné vlastnosti" jsonArr Pole, která, v tomto případě, jsou indexy.

for (const x in ['foo','bar','baz']) { console.log(x) };
// output:
// 0
// 1
// 2

Takže pravděpodobně nebudete chtít použít for ... in. Místo toho můžete použít for ... of iterovat přes prvky pole:

for (const x of ['foo','bar','baz']) { console.log(x) };
// output:
// foo
// bar
// baz

Array iterace a for ... in:

Poznámka: for...in by neměly být používány k iterovat přes Pole, kde index je pořadí důležité.

Pole indexů jsou jen vyčíslitelné vlastnosti s celočíselnými jména a jsou jinak shodné obecné vlastnosti objektu. Tam je ne záruka, že for...in vrátí indexy v konkrétním pořadí. Na for...in loop prohlášení vrátí všechny enumerable vlastnosti, včetně těch, s non–celé číslo, jména a ty, které jsou zdědil.

Protože pořadí iterace je provádění závislé, iterace přes pole nemusí navštívit prvky v jednotný řád. Proto, to je lepší použít for smyčka se číselný index (nebo Array.prototype.forEach() nebo for...of smyčky), když iterace přes pole, kde je cílem přístupu je důležité.

2021-11-23 05:47:08

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ý
..................................................................................................................