2013-06-11 30 views
5

È necessario creare un'istanza di JSONObject con una stringa che ricevo da un'origine esterna. La stringa contiene un valore datetime, che a sua volta contiene due punti. Quando provo a creare un'istanza di JSONObject, ottengo un errore, sembra che a JSON non piacciano i due punti nel mezzo del valore di data e ora.Come eseguire il escape di due punti all'interno di un valore datetime in una stringa JSON

Ecco un frammento di codice:

@Test 
public void testGetDate() 
{ 
    String jsonStr = "{\"sDate\":2013-06-15T09:30:09+0000}"; 
    try 
    { 
     JSONObject jsonObject = new JSONObject(jsonStr); 
     System.out.println(jsonObject.get("sDate")); 

    } catch (JSONException e) 
    { 
     e.printStackTrace(); 
    } 
} 

L'errore che ottengo è:

org.json.JSONException: Expected a ',' or '}' at 23 [character 24 line 1] 

Chiunque ha incontrato questo? C'è un modo per sfuggire al colon?

risposta

2

Se si circonda l'oggetto data/ora tra virgolette, è necessario accettarlo.

questo dovrebbe funzionare:

String jsonStr = "{\"sDate\":\"2013-06-15T09:30:09+0000\"}"; 
+0

Che ha funzionato davvero. Grazie! – user2475664

1

Le stringhe sono required to be quoted in JSON:

string 
    "" 
    " chars " 

Lo snippet non è valido, che è il motivo per cui viene generata l'eccezione. È necessario circondare il valore stringa con virgolette doppie.

0

Il problema più interessante è per i casi in cui la stringa è sconosciuta. Nel caso in cui il formato sia noto, è ragionevolmente facile da risolvere. Aggiunto come utilità per org.json here.

Problemi correlati