1

我是 Java 新手。请帮我。我对下面的 JSON 响应有疑问:

{"GetResult":"{  \"IsDate\": [    {      \"Code\": \"200\"    },    {      \"Message\": \"Fetched successfully\"    },    {      \"ID\": \"722c8190c\",      \"Name\": \"Recruitment\",      \"Path\": \"URL\",      \"Date\": \"14 May, 2013\"    },     ]}"}

它是一个格式错误的 JSON 对象。所以,我正在使用匹配模式来获取数据,并Name成功Path获取Date如下:NamePath

 Matcher matcherName = Pattern.compile("\\\\\"Name\\\\\":\\s\\\\\"[^,}\\]]+\\\\\"").matcher(Name);

Matcher matcherPath = Pattern.compile("\\\\\"Path\\\\\":\\s\\\\\"^[^,}\\]]+\\\\\"").matcher(Path);

所以,从以上几行,我能够得到Pathand Name。所以,请帮助如何获得Date。的格式Date is 14 May, 2013。请帮我。

4

2 回答 2

2

它是有效的 json。

在这里检查jsonlint

像这样解析它

{
    "GetResult": "{  \"IsDate\": [    {      \"Code\": \"200\"    },    {      \"Message\": \"Fetched successfully\"    },    {      \"ID\": \"722c8190c\",      \"Name\": \"Recruitment\",      \"Path\": \"URL\",      \"Date\": \"14 May, 2013\"    },     ]}"
}

JSONObject parent=new JSONObject(jsonString);
JSONObject obj=parent.getJSONObject("GetResult");
JSONArray array=obj.getJSONArray("IsDate");

String jsondatestring=array.getString(2);
JSONObject datejson=new JSONObject(jsondatestring);
String date=datejson.getString("Date");

如果你想知道如何取消这些字符,试试这个

使用Commons langlibarray 和StringEscapeUtils类。

只需使用

String newString=StringEscapeUtils.unescapeJava(yourString);
于 2013-05-14T13:12:06.670 回答
1

Matcher 与您的问题几乎相同:

Matcher matcherDate = Pattern.compile("\\\\\"Date\\\\\":\\s\\\\\"([^\\\\]*)\\\\\"").matcher(brokenJson);
while (matcherDate.find()) {
    System.out.println(matcherDate.group(1));
}

然后你可以使用解析日期SimpleDateFormat

更新。从文件中读取brokenJson并解析它的完整代码:

    String brokenJson = Files.toString(new File("1.dat"), Charset.defaultCharset());
    Matcher matcherDate = Pattern.compile("\\\\\"Date\\\\\":\\s\\\\\"([^\\\\]*)\\\\\"").matcher(brokenJson);
    while (matcherDate.find()) {
        System.out.println(matcherDate.group(1));
    }
于 2013-05-14T13:12:04.277 回答