| diff --git src/libcmis/json-utils.cxx src/libcmis/json-utils.cxx |
| index b537a09..b4e037d 100644 |
| --- src/libcmis/json-utils.cxx |
| +++ src/libcmis/json-utils.cxx |
| @@ -213,48 +213,54 @@ Json::Type Json::parseType( ) |
| { |
| Type type = json_string; |
| string str = toString( ); |
| - boost::posix_time::ptime time = libcmis::parseDateTime( str ); |
| - if ( !time.is_not_a_date_time( ) ) |
| - type = json_datetime; |
| - else |
| + if ( str.empty( ) ) |
| + return type; |
| + try |
| { |
| - Type backupType = type; |
| - type = json_bool; |
| - try |
| - { |
| - parseBool( str ); |
| - } |
| - catch (...) |
| + boost::posix_time::ptime time = libcmis::parseDateTime( str ); |
| + if ( !time.is_not_a_date_time( ) ) |
| + return json_datetime; |
| + } |
| + catch (...) |
| + { |
| + // Try other types |
| + } |
| + Type backupType = type; |
| + type = json_bool; |
| + try |
| + { |
| + parseBool( str ); |
| + } |
| + catch (...) |
| + { |
| + type = backupType; |
| + } |
| + if ( type != json_bool ) |
| + { |
| + if ( str.find('.') == string::npos ) |
| { |
| - type = backupType; |
| + backupType = type; |
| + type = json_int; |
| + try |
| + { |
| + parseInteger( str ); |
| + } |
| + catch(...) |
| + { |
| + type = backupType; |
| + } |
| } |
| - if ( type != json_bool ) |
| + else |
| { |
| - if ( str.find('.') == string::npos ) |
| + backupType = type; |
| + type = json_double; |
| + try |
| { |
| - backupType = type; |
| - type = json_int; |
| - try |
| - { |
| - parseInteger( str ); |
| - } |
| - catch(...) |
| - { |
| - type = backupType; |
| - } |
| + parseDouble( str ); |
| } |
| - else |
| - { |
| - backupType = type; |
| - type = json_double; |
| - try |
| - { |
| - parseDouble( str ); |
| - } |
| - catch(...) |
| - { |
| - type = backupType; |
| - } |
| + catch(...) |
| + { |
| + type = backupType; |
| } |
| } |
| } |