Java-Date模式匹配
我是Java新手。请帮帮我。我对下面的JSON响应有问题: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\
{"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中的字符串转义)。请参阅更新中的完整代码