Ci sono un sacco di domande SO che chiedono "come" ottenere le chiavi JSON sconosciute da un oggetto JSON, e l'ho fatto molte volte, ma dopo aver iniziato a usare lo schema JSON per iniziare a progettare la richiesta e le risposte API, sono iniziando a chiedersi se si dispone di chiavi dinamiche sconosciute o addirittura che il consumatore JSON deve essere abbastanza intelligente da sapere come usarlo.
Ad esempio, supponi di progettare una semplice API di grafica per un grafico a barre. Potresti dire al tuo cliente che stai per inviare loro i dati in questo formato:
"data": {
"Sunday": 1,
"Monday": 2,
"Tuesday": 3,
"Wednesday": 4,
"Thursday": 5,
"Friday": 6,
"Saturday": 7
}
Tecnicamente, questo è sufficiente per creare un grafico in cui le etichette sull'asse x sono le chiavi in questo oggetto JSON, e i numeri sono gli scalari grafici sull'asse y. È anche tecnicamente dinamico, poiché puoi creare un intero nuovo grafico con lo stesso modello:
"data": {
"Jack": 1,
"Jill": 2,
"Alice" 3
}
Mentre JSON consente flessibilità, sto iniziando a mettere in discussione l'usabilità di questo. Sembra l'equivalente del trattamento dei nomi delle variabili in una classe Java come modo di inviare informazioni.
Un approccio alternativo potrebbe essere quello di definire uno schema datapoint
o qualcosa del genere:
"data": [
{
"category": "Jack",
"value": 1
},
{
"category": "Jill",
"value": 2
},
{
"category": "Alice",
"value": 3
}
]
Inoltre, questo sembra più estendibile, poiché è possibile aggiungere ulteriori valori allo schema. Tuttavia, probabilmente c'è meno marshalling ed è probabilmente un po 'più semplice usare l'approccio con le chiavi sconosciute.
Mi sono semplicemente chiesto, ho usato chiavi sconosciute nel passato, ma improvvisamente non sembrano l'approccio migliore.
- Usi le chiavi sconosciute come caso d'uso previsto per JSON? O solo un effetto collaterale che viene sfruttato?
- Esistono buone pratiche che promuovono o scoraggiano l'utilizzo di chiavi sconosciute?
- Se esistono best practice per l'utilizzo di chiavi sconosciute, in quali condizioni vengono raccomandate?