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.