Fix: bug fixes in readJson

This commit contains bug fixes in readJson function call
 1) Handled invalid double value which is leading to crash
    bmcweb. If user give string for double value key, its
    not handled in readJson which intern causes exception
    and crash.
 2) If any of input types of floating_point, signed or unsigned
    int type values are provided with wrong type, it should
    return error, instead its returning 200 success response.
    Added code to return proper error response.

Tested:
 - Tested invalid case by giving wrong type values in PATCH.
URI: /redfish/v1/Chassis/WC_Baseboard/Thermal
METHOD: Patch
REQUEST:
{
"Fans": [
    {
      "MemberId": "Fan_1a",
      "Reading": "200"
    }
  ]
}
RESPONSE:
{
  "Reading@Message.ExtendedInfo": [
    {
      "@odata.type": "/redfish/v1/$metadata#Message.v1_0_0.Message",
      "Message": "The value \"200\" for the property Reading is of a different type than the property can accept.",
      "MessageArgs": [
        "\"200\"",
        "Reading"
      ],
      "MessageId": "Base.1.4.0.PropertyValueTypeError",
      "Resolution": "Correct the value for the property in the request body and resubmit the request if the operation failed.",
      "Severity": "Warning"
    }
  ]
}

 - Also performed some positive and negative tests with other URI's.
 - Redfish validator ran successfully without any issue(No impact though)

Change-Id: Ie98384e67a863ab96aa537f492a686b2c7ebb3a2
Signed-off-by: AppaRao Puli <apparao.puli@linux.intel.com>
diff --git a/redfish-core/include/utils/json_utils.hpp b/redfish-core/include/utils/json_utils.hpp
index 5f3f098..86bd97c 100644
--- a/redfish-core/include/utils/json_utils.hpp
+++ b/redfish-core/include/utils/json_utils.hpp
@@ -129,6 +129,11 @@
                 jsonPtr = &helper;
             }
         }
+        if (jsonPtr == nullptr)
+        {
+            messages::propertyValueTypeError(res, jsonValue.dump(), key);
+            return false;
+        }
         if (!checkRange<Type>(*jsonPtr, key, jsonValue, res))
         {
             return false;
@@ -141,6 +146,7 @@
         int64_t* jsonPtr = jsonValue.get_ptr<int64_t*>();
         if (jsonPtr == nullptr)
         {
+            messages::propertyValueTypeError(res, jsonValue.dump(), key);
             return false;
         }
         if (!checkRange<Type>(*jsonPtr, key, jsonValue, res))
@@ -156,6 +162,7 @@
         uint64_t* jsonPtr = jsonValue.get_ptr<uint64_t*>();
         if (jsonPtr == nullptr)
         {
+            messages::propertyValueTypeError(res, jsonValue.dump(), key);
             return false;
         }
         if (!checkRange<Type>(*jsonPtr, key, jsonValue, res))