javascript - POST-förfrågan med inbäddad Map tom
Jag har en Spring Boot-applikation med en React/Typescript-framkant. Jag har för närvarande följande två gränssnitt och ett objekt skapat utifrån dessa.
export interface Order {
customer_id: number;
date: Date;
total: number;
spec: OrderSpec;
}
export interface OrderSpec {
order: Map<number, number>
}
Jag konstruerar ett objekt av typen Order och försöker skapa en POST-förfrågan med det på följande sätt:
return fetch(url, {
method: method,
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify(item),
});
Mitt problem är att varje gång en förfrågan skickas ser objektet ut så här: beställningskartan är alltid tom (se... spec:{order:{}})
Svar #1
När du gör en Map till sträng får du ett tomt json-objekt.
Antingen konverterar du din Map till ett object och skickar det sedan till ditt API eller så ändrar du helt enkelt din datastruktur/typer för att lagra objekt.
du kan använda koden nedan för att konvertera din karta till ett js-objekt
let myMap = new Map();
myMap.set(1, 'one');
myMap.set(2, 'two');
Object.assign({}, ...Array.from(myMap.entries()).map(([k, v]) =>({[k]: v}) ))
Se nedan för mer vägledning om kartomvandling:
Konvertera karta till JSON-objekt i Javascript
https://gist.github.com/lukehorvat/133e2293ba6ae96a35ba
