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