2

I am trying to modify my code to resolve this error, but not sure why it isn't working. I am returning an array of JSON objects and the json is valid. What do I need to modify in the code below to resolve this error?

Error message: Error: Method does not exist or incorrect signature: void get(String) from the type Object

 HttpResponse response = h.send(request);

 if (response.getStatusCode() == 200) {

   List<Object> arr =(List<Object>)JSON.deserializeUntyped(response.getBody());
   Map<String, Object> dataNode = (Map<String, Object>)arr[0].get('Data');

   System.debug('data node ------------->' + dataNode);
}
  • (Map<String, Object>)((Map<String, Object>)arr[0]).get('Data'); – kurunve Sep 2 at 22:32
4

In addition of casting the Object at the first index of arr to a map you also need to cast the Object that comes back from Data to a Map<string, Object> as well.

String jsonInput = '[{\n' +
    ' "Data" : ' + 
      '{ "height" : 5.5 , ' + 
        '"width" : 3.0 , ' + 
        '"depth" : 2.2 }\n' +
    '},\n' +
    '{\n' +
    ' "Data" : ' + 
      '{ "height" : 5.5 , ' + 
        '"width" : 3.0 , ' + 
        '"depth" : 2.2 }' +
    '}]';

List<Object> arr =(List<Object>)JSON.deserializeUntyped(jsonInput);
Map<String, Object> dataNode = (Map<String, Object>)((Map<String, Object>)arr[0]).get('Data');
System.debug(dataNode);

As that is starting to get unwieldy due to the multiple casts it would be helpful to split it out to a few lines.

List<Object> arr =(List<Object>)JSON.deserializeUntyped(jsonInput);
Map<String, Object> firstMap = (Map<String, Object>)arr[0];
Map<String, Object> dataNodeMap = (Map<String, Object>)firstMap.get('Data');
System.debug(dataNodeMap);

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.