如何在JSON字符串中的datetime值内转义冒号

时间:2013-06-11 18:07:45

标签: java json datetime

我需要使用从外部源接收的字符串来实例化JSONObject。该字符串包含一个日期时间值,该值又包含冒号。 当我尝试创建JSONObject的实例时,我收到一个错误,看起来JSON不喜欢日期时间值中间的冒号。

以下是代码段:

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

我得到的错误是:

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

有没有人遇到过这个?有没有办法逃脱结肠?

3 个答案:

答案 0 :(得分:2)

如果用双引号括住日期/时间对象,它应该接受它。

这应该有效:

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

答案 1 :(得分:2)

字符串为required to be quoted in JSON

string
  ""
  " chars "

您的代码段无效,这就是引发异常的原因。您必须用双引号括起字符串值。

答案 2 :(得分:0)

更有趣的问题是字符串未知的情况。如果格式已知,那么它很容易修复。作为org.json here的实用程序添加。