2016-07-15 87 views
1

我有一個具有混合數據類型值的jsonObject。我想承認他們的課程,以便我可以進一步處理。如何檢查JSON對象的json日期類型?

但是,當他們的類是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 

我嘗試過使用EdmDateTimeEdmDateTimeOffset org.apache.olingo-olingo-odata2-core-2.0.6.jar中的類,但這不起作用。 仍然顯示/日期(1463667774000 + 9000)/是字符串

回答

2

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")));