Optimal sätt att skapa en JSON-frågeparameter i Angular
Jag har en applikation med Angular 2.x skriven i TypeScript där jag behöver skapa en JSON-struktur dynamiskt baserat på användarinteraktioner med användargränssnittet. JSON-strukturen består av nyckel:värde-parametrar och arrayer. Denna JSON-struktur skickas sedan till ett API som HTTP-parameter.
Ett förenklat exempel på JSON-strukturen:
{
'key_1': 'param_1',
'key_2: 'param_2',
'array_key_1': [
{
'key_1_1': 'value_1_1',
'key_1_2': 'value_1_2
},
{
'key_2_1': 'value_2_1',
'key_2_2': 'value_2_2'
}
],
'array_key_2': [
{
'key_1_1': 'value_1_1',
'key_1_2': 'value_1_2,
'someArray': [...]
},
{
'key_2_1': 'value_2_1',
'key_2_2': 'value_2_2'
'someArray': [..]
}
]
}
Denna JSON-struktur används som en fråga till en databas.
Nuvarande implementering
Inledningsvis deklarerar jag en public sqlJSON: Object={} i komponenten och använder ngOnInit() LifeCycleHook för att initiera de tomma arrayerna (detta behövs eftersom Angular annars inte kommer att känna igen arrayen när ett objekt läggs till i den).
Jag använder ngOnChanges LifeCycleHook för att återställa JSON-strukturen om användaren byter till ett annat intresseområde. Till exempel, sqlJSON['array_key_1']=[] och så vidare.
Förfrågan
Finns det ett bättre sätt att skapa sådana JSON-strukturer? Till exempel, kan man använda localStorage för samma sak med tanke på att JSON:en kan bli mycket stor om användaren interagerar mycket med gränssnittet? Finns det också några minnesbegränsningar när man lagrar sådana JSON-strukturer i localStorage.
Det är också värt att informera om att eftersom Backend-kraven ständigt förändras, behöver den ovan nämnda JSON-strukturen fortsätta lägga till/ta bort nya nyckel:värde-parametrar.
Kan ett interface användas för att bygga detta JSON? Jag tror att eftersom parametrar ständigt läggs till/ tas bort skulle ett interface vara mer anpassningsbart.