2014-10-08 9 views
8

Attualmente ho il seguente oggetto json array nel file (name.json).Aggiunge l'elemento JSON all'array JSON nel file utilizzando Java

[{ 
    "name":"ray", 
    "value":"1" 
}, 
] 

Ora voglio aggiungere un altro elemento in questo array Json nel file utilizzando java. Qualcosa di simile a questo:

[{ 
    "name":"ray", 
    "value":"1" 
}, 
{ 
    "name":"john", 
    "value":"2" 
} 
] 

Un modo potrebbe essere quello di leggere l'intero array dal file, aggiungere un elemento di tale matrice e scrivere di nuovo al di file JSON in java. Ma questo non è sicuramente il modo migliore per fare questo compito. Qualcuno può suggerire un altro modo per questo?

+1

No, il modo suggerito è il modo appropriato. –

+3

deserializzare i dati, accodare i dati e quindi serializzare i dati è sicuramente quello che dovresti fare. –

+1

Cosa c'è di sbagliato nell'approccio che hai descritto? È l'unico modo pulito per farlo. – nablex

risposta

2

Prova questo:

1 - creare un oggetto RandomAccessFile con permessi di lettura/scrittura ("RW");

RandomAccessFile randomAccessFile = new RandomAccessFile("/path/to/file.json", "rw"); 

2 - impostare il cursore file alla posizione del char "]"

long pos = randomAccessFile.length(); 
while (randomAccessFile.length() > 0) { 
    pos--; 
    randomAccessFile.seek(pos); 
    if (randomAccessFile.readByte() == ']') { 
     randomAccessFile.seek(pos); 
     break; 
    } 
} 

3 - scrivere una virgola (se non è il primo elemento), il nuovo elemento JSON e il char "]"

String jsonElement = "{ ... }"; 
randomAccessFile.writeBytes("," + jsonElement + "]"); 

4 - chiudere il file

randomAccessFile.close();