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?