2013-06-11 10 views
5

Tôi cần khởi tạo JSONObject bằng chuỗi mà tôi nhận được từ nguồn bên ngoài. Chuỗi chứa giá trị datetime, lần lượt chứa dấu hai chấm. Khi tôi cố gắng tạo một thể hiện của JSONObject, tôi gặp lỗi, có vẻ như JSON không thích dấu hai chấm ở giữa giá trị ngày tháng.Cách để thoát khỏi dấu hai chấm bên trong giá trị ngày giờ trong chuỗi JSON

Đây là một đoạn mã:

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

Các lỗi tôi nhận được là:

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

Có ai gặp phải điều này? Có cách nào để thoát khỏi đại tràng không?

Trả lời

2

Nếu bạn bao quanh đối tượng ngày/giờ của bạn trong dấu ngoặc kép, nó sẽ chấp nhận nó.

này nên làm việc:

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

Điều đó thực sự hiệu quả. Cảm ơn! – user2475664

1

Strings là required to be quoted in JSON:

string 
    "" 
    " chars " 

đoạn bạn không hợp lệ, đó là lý do tại sao các ngoại lệ được ném. Bạn phải bao quanh giá trị chuỗi với dấu ngoặc kép.

0

Vấn đề thú vị hơn là đối với trường hợp chuỗi không xác định. Trong trường hợp định dạng được biết thì nó dễ dàng sửa chữa. Được thêm dưới dạng tiện ích vào org.json here.