Reagowanie na pobieranie z serwera Go/Golang, analizując dane w nagłym formacie JSON w liczba

0

Pytanie

Tworzę aplikację internetową, która korzysta z serwera Go do transmisji danych w aplikacji React.

Podczas tworzenia mojego serwera i przestrzegać instrukcji dostarczonego Go docs (https://golang.org/doc/tutorial/web-service-gin). Mój kod jest bardzo podobny na ten kod i uzyskać oczekiwane rezultaty, gdy używam curl.

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

Jednak, gdy używam API próbki React, moje wyniki są zwracane w nieoczekiwanej formie.

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

Kiedy console.log(jsonArr)przeglądarka informuje, co następuje:

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", ... }

Te indeksy (i barwny przeglądarki) wskazywały, że dane teraz są w postaci tablicy, więc jestem uważał je jako takie.

Próbowałem chodzić na tej tablicy, aby analizować wiersze json wewnątrz niego, ale JSON.parse(data) produkuje tylko liczby (0, 1 i 2, odpowiednio), a nie obiekty, jak się spodziewałem.

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

Spędziłem jakiś wyszukiwanie i usłyszał, że indeksy tablicy, w której pochodzą dane, mogą powodować problemy, dlatego próbowałem też wykonać analizę za pomocą funkcji przywracania.

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
}

Próba JSON.parse(jsonArr) zgłasza błąd, jak oczekiwano. Jestem w ślepym zaułku. Dlaczego on zna się na liczbę(n indeksów)? Jak mogę wyodrębnić obiekty wewnątrz tablicy, gdy podczas analizy lub wydruku) wierszy wewnątrz tablicy są tylko liczby?

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

Najlepsza odpowiedź

1

To json wartość w for (const json in jsonArr) { zostanie ustawiona na "numerowane właściwości" jsonArr Masyw, który w tym przypadku jest indeksów.

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

Więc prawdopodobnie nie będziesz chciał korzystać for ... in. Zamiast tego można użyć for ... of do krach elementów tablicy:

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

Iteracja tablicy i for ... in:

Uwaga: for...in nie należy używać do przeszukiwania tablicy, w której liczy się kolejność indeksów.

Indeksy tablic są po prostu перечисляемыми właściwości z nazwiskami i liczbami całkowitymi poza tym są identyczne wspólnych właściwości obiektów. Nie ma gwarancji, że for...in zwróci indeksy w każdym określonym porządku. To for...in operator cyklu zwróci wszystkie wyliczeniowe właściwości, w tym właściwości z nazwiskami i нецелыми odziedziczone.

Ponieważ kolejność iteracji zależy od realizacji, iteracja na tablicy nie może prowadzić do pójścia do elementów w sposób spójny. Tak więc lepiej jest użyćfor pętla z licznikiem indeks (lub Array.prototype.forEach() lub wfor...of cykl) podczas iteracji po macierzy, gdzie liczy się kolejność dostępu.

2021-11-23 05:47:08

W innych językach

Ta strona jest w innych językach

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