Working with SharePoint REST call, I often have to Deserialize Json string with strange Property name, for example odata.nextLink, with a nice DOT (.) inside.
Here an example...
{
"odata.nextLink": "https://zsis01.sharepoint.com/sites/TestFlow/_api/...",
[
{"Id": 28, "Title": "Title - F8CDD090-B099-4DDF-AD23-27E08A58A03C", "MyDate": "2016-10-25T22:00:00Z",…},
{"Id": 29, "Title": "Title - DAD1532A-B82E-4868-AC29-2480252AA148", "MyDate": "2016-08-22T22:00:00Z",…},
{"Id": 30, "Title": "Title - 654372B6-58A3-4C99-AFF4-E93E49B26DA4", "MyDate": "2017-03-24T23:00:00Z",…},
{"Id": 31, "Title": "Title - 853D9CA4-E13B-4ADA-BD19-E7DC927C1B2D", "MyDate": "2017-05-12T22:00:00Z",…},
{"Id": 32, "Title": "Title - A9BF19D1-460D-46EB-8C52-985C70EBC362", "MyDate": "2016-06-13T22:00:00Z",…},
{"Id": 33, "Title": "Title - 4174059B-CEB3-41DE-A3C2-88CE3591665F", "MyDate": "2018-09-29T22:00:00Z",…},
{"Id": 34, "Title": "Title - 857A64EA-F32F-4F62-BB2F-EC030DFC6032", "MyDate": "2016-12-27T23:00:00Z",…},
{"Id": 35, "Title": "Title - 4D57D101-8D62-4B91-AEF3-4DA8027D0D20", "MyDate": "2019-06-25T22:00:00Z",…},
{"Id": 36, "Title": "Title - FE51E10E-760A-451B-892A-747981B06D36", "MyDate": "2017-12-25T23:00:00Z",…},
{"Id": 37, "Title": "Title - 02AA8D18-F34E-4114-9226-1ACB62BCF1D4", "MyDate": "2014-10-15T22:00:00Z",…}
]
}
When I use JsonConvert.DeserializeObject (thanks to Newtonsoft.Json) I've to create a class which reflects the same propery name of the JSON result.
My mom taught me that I can't create a class property with a dot (.) inside its name.
I can't create a property named odata.nextLink.
Here the solution:
I create a property with a acceptable name, for example OdatanextLink and then I set the Propery Name of the propery to the strange name, using the JsonPropery decoration.
[JsonProperty(PropertyName = "odata.nextLink")]
public string OdatanextLink { get; set; }
Here my class.
public class Rootobject
{
[JsonProperty(PropertyName = "odata.nextLink")]
public stringOdatanextLink { get; set; }
[JsonProperty(PropertyName = "value")]
public Listdynamic> Items { get; set; }
}