我有一个混合数据类型值的jsonObject。我想认识他们的课程,以便我可以进一步处理。
但是,当他们的班级为 Json日期类型时,我无法检查对象的类型。
示例试用代码
JSONObject js1 = new JSONObject(
"{\"a\": 1, \"b\": \"str\", \"dob\":\"/Date(1463667774000+0000)/\"}");
Iterator<String> keys = js1.keys();
while(keys.hasNext()){
Object aObj = js1.get(keys.next());
if(aObj instanceof Integer){
System.out.println(aObj+" is Integer");
}else if(aObj instanceof String){
System.out.println(aObj+"is String");
}else if(aObj instanceof Date){
System.out.println(aObj+"is Date");
}
}
结果:
1 is Integer
str is String
/Date(1463667774000+9000)/ is String
预期结果:
1 is Integer
str is String
/Date(1463667774000+9000)/ is Date
我尝试在org.apache.olingo-olingo-odata2-core-2.0.6.jar中使用 EdmDateTime 和 EdmDateTimeOffset 类,但这不起作用。 它仍然显示/日期(1463667774000 + 9000)/是字符串
答案 0 :(得分:3)
Json结构不会保留日期类型。你需要自己转换它。
你可以这样做:
else if(aObj instanceof String) {
if (aObj.toString().startsWith("/Date")) {
System.out.println(aObj+" is Date");
}
else
System.out.println(aObj+" is String");
然后再
String str = "/Date(1463667774000-9000)/";
Date date = new Date(Long.parseLong(str.replaceAll(".*?(\\d+).*", "$1")));