Come modellare i dati JSON in modo che possano essere facilmente serializzati in semplici classi Java?

2

Contesto

Attualmente sto lottando con la modellazione corretta di un piccolo set di istruzioni che desidero inviare come JSON a un'applicazione Android per generare un elenco di parti dell'interfaccia utente. Al momento è stratificato come un singolo albero a cascata di oggetti / condizioni e meta-dati.

Piccolo esempio:

{ 
"instruction": {
"remarks": "",
"steps": [
  {
    "id": "1234",
    "type": "text",
    "text": "Welcome!"
  },
  {
    "..": "..",
    "type": "image",
    "url": "example.org/image.png"
  },
  ..
 ]
}

Ma ora il mio set di istruzioni sta crescendo con parti che a volte possono essere ignorate, non presenti e parti che devono essere compilate. Voglio anche rendere il JSON facile da analizzare, quindi penso che probabilmente dovrei fare qualcosa di semplici classi java per una libreria di analisi come GSON.

Domande

Come dovrei modellarlo?

  • Dovrei limitarmi a creare un singolo documento JSON di grandi dimensioni con oggetti incorporati che poi si traducono in separare semplici file di classi java (forse DTO)?
  • O devo ripensare al mio set di istruzioni e inserirlo in diversi documenti JSON (come oggetti) che includono riferimenti di documenti?

Sono anche un po 'confuso su come tradurrei quei riferimenti (se li avessi usati) in un campo JSON che può essere letto da una libreria come GSON di nuovo in codice java.

I concetti relativi ai documenti di riferimento e incorporamento che ho citato provengono da Dati MongoDB Model Design . Dato che ho pensato che sarebbe stato facile salvare il mio JSON in un database NoSQL come MongoDB.

C'è forse un'altra tecnica con cui descrivere meglio i miei dati JSON a questo punto come JSON Schema's ?

    
posta Joep_H 19.09.2018 - 18:28
fonte

2 risposte

1

Quando la serializzazione dell'oggetto è coinvolta, un oggetto Data Transfer (come hai detto) ti dà la flessibilità necessaria per rispecchiare la struttura JSON in un linguaggio orientato agli oggetti. Ogni stack tecnologico ha un modo per analizzare JSON in formati di dati specifici (int, stringhe, float, strutture, oggetti complessi, array, ecc.)

Una volta che hai il DTO sei libero di mappare questo ad altri tipi di classi a seconda delle tue esigenze, siano essi modelli di dominio, modelli di visualizzazione o qualche altro "modello" di cui hai bisogno in qualche angolo oscuro della tua applicazione.

Le librerie di analisi JSON che puoi trovare spesso usano la reflection della classe per dedurre i tipi di dati o forniscono un modo per specificare il mapping utilizzando i file di configurazione o un'API fluente.

    
risposta data 19.09.2018 - 20:44
fonte
1

Penso che alla tua domanda potrebbe essere stata data una risposta over a Stack Overflow . Implica l'uso della specifica link per progettare il tuo JSON e convertirlo con link . Non sono sicuro se il repository github necessiti di aggiornamenti per la versione corrente di Java, ma potrebbe darti un buon punto di partenza.

    
risposta data 19.09.2018 - 23:48
fonte

Leggi altre domande sui tag