2013-06-11 16 views
5

Potrzebuję utworzyć instancję JSONObject za pomocą ciągu, który otrzymuję z zewnętrznego źródła. Łańcuch zawiera wartość datetime, która z kolei zawiera dwukropek. Kiedy próbuję utworzyć wystąpienie JSONObject, pojawia się błąd, wygląda na to, że JSON nie lubi dwukropka w środku wartości daty.Jak uniknąć dwukropka wewnątrz wartości datetime w ciągu JSON

Oto fragment kodu:

@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(); 
    } 
} 

Błąd pojawia się:

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

Czy ktoś napotkał tego? Czy jest jakiś sposób na ucieczkę z jelita grubego?

Odpowiedz

2

Jeśli otaczasz obiekt daty/czasu w podwójnym cudzysłowie, powinien go zaakceptować.

To powinno działać:

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

To rzeczywiście zadziałało. Dzięki! – user2475664

1

Struny są required to be quoted in JSON:

string 
    "" 
    " chars " 

Twój fragment jest nieważna, dlatego jest wyjątek. Musisz otoczyć wartość ciągu cudzysłowami.

0

Bardziej interesująca kwestia dotyczy przypadków, w których ciąg znaków jest nieznany. Jeśli format jest znany, można go łatwo naprawić. Dodano jako narzędzie do org.json here.

Powiązane problemy