2016-07-15 54 views
1

私は、混合データ型の値を持つjsonObjectを持っています。私は彼らのクラスを認識して、私はさらに処理することができます。JSONObjectから値の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"))); 
関連する問題