Question
How to deserialize JSON to a Dictionary object in a Script task?
23:16 Jun 19, 2023
I need to deserialize a JSON string in a process script task. The JSON has to be serialized into a Dictionary object as it is not possible to define a class in a Script task.
Using `Terrasoft.Common.Json`:
var recordJSON = Get("ProcessSchemaParameterRecordJSON");
var recordDict = Json.DeserializeDictionary(recordJSON);
var recordStr = recordDict["accountName"];
Set("ProcessSchemaParameterRecordText", recordStr);
return true;Results in the error:
System.NullReferenceException: Object reference not set to an instance of an object.
at Terrasoft.Common.Json.DictionaryJsonConverter.DeserializeDictionaryItem(JsonReader reader)
at Terrasoft.Common.Json.DictionaryJsonConverter.ReadJson(JsonReader reader, Type objectType, Object existingValue, JsonSerializer serializer)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.DeserializeConvertable(JsonConverter converter, JsonReader reader, Type objectType, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
at Terrasoft.Common.Json.Json.DeserializeDictionary(String source)`Newtonsoft.Json` looked promising:
JsonConvert.DeserializeObject>(recordJSON);However the parser threw an error when it came up against an array in the JSON.
`System.Text.Json` does not support deserializing to a dictionary object as far as I can see.
The `System.Web.Script` namespace does not appear to be available in Creatio.
Thanks in advance,
Like
2 comments
23:34 Jun 19, 2023
Please study the example I created for your question in the https://community.creatio.com/questions/help-parse-json-i-get-webservic… thread. It should help in your case either.
Show all comments