I have a specific Json that I want to convert to C# class object:
Json:
{
"Database": "DEMO",
"Schema": "PUBLIC",
"Warehouse": "TEST_WH",
"Query": "Call proc();",
"Role": "SYSADMIN",
"IsOpsTestRequest": "false",
"QueryParameters": {
"Param1": "abc",
"Param2": "def"
}
}
Class:
public class Request_Body
{
public string Database { get; set; }
public string Schema { get; set; }
public string Warehouse { get; set; }
public string Query { get; set; }
public string Role { get; set; }
public string IsOpsTestRequest { get; set; }
public List<(string, string)> QueryParameters { get; set; }
}
I am sending this json while making a post request to my azure functions http function (durable functions) and then I am trying to convert this json to C# object.
If I remove QueryParameter
List variable from class and also remove QueryParameter
from json than it runs perfect but I want this QueryParameter
in json and it should be generic - it can contain further attributes like param1
and param2
or sometimes maybe more. So it should be generic.
In my http trigger function I am converting json to class object as follow:
Request_Body data = await req.Content.ReadAsAsync<Request_Body>();
How can I deserialize the json?
The JSON for QueryParameters
does not represent a list or array. A list or array in JSON would have square brackets ([...]
) surrounding the values.
However, the JSON can be represented by Dictionary<string, string>
. So your class should look like this:
public class Request_Body
{
public string Database { get; set; }
public string Schema { get; set; }
public string Warehouse { get; set; }
public string Query { get; set; }
public string Role { get; set; }
public string IsOpsTestRequest { get; set; }
public Dictionary<string, string> QueryParameters { get; set; }
}