1

I have a doubt regarding the JSON deserialiser method.

So when we deserialise a JSON response or JSON file. Is there a way to make every attribut and value into a string type rather than its original datatype.

The reason I am asking this is because I faced some error in one-two variables in a JSON while parsing and displaying the result in my visual force page.

The error was

illegal value for primitive

Anyhelp will be appreciated. Thanks all

1 Answer 1

1

You cannot directly do so. As a workaround, can manually parse the JSON with JSON.deserializeUntyped or JSONParser, then do the conversion manually for each value.

Here's an example:

Object stringifyAll(Object value) {
  if(value instanceOf Map<String, Object>) {
      System.debug('parsing map');
    Map<String, Object> temp = (Map<String, Object>)value;
    for(String key: temp.keySet()) {
      temp.put(key, stringifyAll(temp.get(key)));
    }
    return temp;
  }
  if(value instanceOf List<Object>) {
      system.debug('parsing list');
    List<Object> temp = (List<Object>)value;
    for(Integer i = 0, s = temp.size(); i < s; i++) {
      temp[i] = stringifyAll(temp[i]);
    }
    return temp;
  }
  return value==null?null:value+'';
}

Which is called as:

Object results = stringifyAll(
  JSON.deserializeUntyped(jsonSource)
};

Or, if you want it back in a JSON string:

String jsonResults = JSON.serialize(
  stringifyAll(
    JSON.deserializeUntyped(jsonSource)
  )
);

If you want to retain null values as null (instead of the string "null"), change the last line to:

return value == null? null: ''+value;

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .