Java-Date模式匹配

Java-Date模式匹配,java,android,regex,pattern-matching,Java,Android,Regex,Pattern Matching,我是Java新手。请帮帮我。我对下面的JSON响应有问题: {"GetResult":"{ \"IsDate\": [ { \"Code\": \"200\" }, { \"Message\": \"Fetched successfully\" }, { \"ID\": \"722c8190c\", \"Name\": \"Recruitment\", \"Path\": \"URL\", \"Date\

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

{"GetResult":"{  \"IsDate\": [    {      \"Code\": \"200\"    },    {      \"Message\": \"Fetched successfully\"    },    {      \"ID\": \"722c8190c\",      \"Name\": \"Recruitment\",      \"Path\": \"URL\",      \"Date\": \"14 May, 2013\"    },     ]}"}
它是一个格式错误的JSON对象。因此,我使用匹配模式成功获取
名称
路径
日期
的数据,并成功获取
名称
路径
,如下所示:

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

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

因此,从上面几行中,我可以得到
Path
Name
。因此,请帮助我们如何获取日期。
日期的格式为2013年5月14日
。请帮助我。

Matcher与您的问题几乎相同:

Matcher matcherDate = Pattern.compile("\\\\\"Date\\\\\":\\s\\\\\"([^\\\\]*)\\\\\"").matcher(brokenJson);
while (matcherDate.find()) {
    System.out.println(matcherDate.group(1));
}
然后您可以使用
simpleDataFormat

更新。从文件中读取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));
    }
它是有效的json

检查这里

像这样解析它

{
    "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 lang
libarray和
StringEscapeUtils
class

简单使用

String newString=StringEscapeUtils.unescapeJava(yourString);

可能String.replace更好。在replace之前,我需要将日期内容放入数组中。JSON响应中将有多个日期对象。因此,首先我需要将JSON中的所有日期存储到字符串数组中,就像我对名称和路径所做的一样。请通过
MAtcher
帮助我。我认为真正的JSON是GetResult propertyparsing的一个值,因为JSON比应用正则表达式、模式匹配更好。这对我没有帮助。我的身体状况不太好。请帮帮我,当我把你破碎的Json放到一个文件中并从那里读取它时,它对我很有用(以避免Java中的字符串转义)。请参阅更新中的完整代码