Sono d'accordo sull'approccio più semplice in genere è il migliore e per me la manipolazione JSON ha vinto le mani in questa situazione.
Il bit importante della domanda è '(rimuovendo alcuni campi che non sono rilevanti) al client mobile'
Quindi da quello che ho capito c'è più di una variante di client mobile e per ogni diverso campo json sono selezionati dai dati dei clienti di origine json.
Utilizzando l'approccio DTO, dovrei prima eseguire il marshalling dei dati del cliente di origine JSON su un DTO, quindi se avessi 4 client mobili avrei bisogno di 4 DTO e più metodi per impostare gli attributi su ciascun tipo di DTO.
Utilizzando l'approccio JSONObject, avrei qualcosa del tipo:
JSONObject sourceCustomerData = JSONObject.fromObject(httpResponseInputStream)
e passerebbe il sourceCustomerData
a un metodo per restituire il JSON adatto al singolo client mobile, ad esempio:
JSONObject customerDataClientX = getRequiredJson(requiredJsonFeildsForMobileClientA, sourceCustomerData)
dove requiredJsonFeildsForMobileClientA
è l'elenco dei campi JSON richiesti. Pertanto, per ogni client mobile può essere passato un elenco diverso di campi JSON richiesti.
DTO PROS
- Diritto in avanti e codice verboso POJO.
- Adatto per trasformazioni più complesse.
- Facilmente testabile.
DTO CONS
- I DTO sono modelli tenuti in codice, non possono essere modificati senza manipolare il codice.
- Più codice come DTO e il codice della popolazione sono direttamente correlati al numero di varianti del client mobile.
JSONObject PROS
- Codice straight forward.
- Facilmente testabile, è una funzione su fattori esterni.
- Meno codice come una scarpa adatta a tutti, non direttamente correlato al numero di varianti di client mobili
- Non esiste un modello contenuto nel codice, l'elenco dei campi JSON per ogni client mobile può essere tenuto in configurazione esternamente.
JSONObject CONS
- Non adatto a trasformazioni più complesse.
- JSONObject richiede il modello di navigazione JSON, non così bello da preparare o scrivere.
In futuro, poiché sono necessarie trasformazioni più complesse, è possibile aggiungerle e persino prendere in considerazione la possibilità di passare a un modello basato su DTO se rende l'attività più semplice.