Steve Hibbert Steve Hibbert - 1 year ago 34
JSON Question

How to Deserialise JSON Data to Array of Model objects?

I have a C#/ASP.Net project using WebAPI2 that has an API endpoint. That endpoint provides an array of JSON objects as a response to a GET request. I use a Model of the native object for serialisation, which is the standard way in WebAPI2 as I understand it.

The serialization happens 'behind the scenes' when I send an OK HttpActionResult typed for an IEnumerable of models,

return Ok<IEnumerable<Model>>(arrayOfModels);

I have a second app that receives the JSON string representation of the array of models. The inbound string to deserialise looks like this, for an array with a single element...

"ExecID": "EXWB4KT-1",
"Symbol": "CERT-EUR-TEST",
"ExecutionTime": "2016-07-28T14:59:56.24",
"BuyExchID": "IDH64KT-1",
"SellExchID": "IDH64KT-3",
"Tradable": {
"CERT": {
"AccSrc": "ANDY-CERT",
"AccDst": "HIBLET-CERT",
"Qty": "0.01000000",
"State": "PENDING"
"EUR1": {
"AccSrc": "HIBLET-EUR",
"AccDst": "ANDY-EUR",
"Qty": "0.33",
"State": "PENDING"

How should I rehydrate the JSON data, bearing in mind that I have the WebAPI2 model available in another project?

As I have control of both ends, I am thinking the deserialisation back into an array of models should be trivial, but I am not sure how to do it. I know there are lots of possible ways to do this, I am looking for the sanest or cleanest way.

Answer Source

Try the Newsoft.Json nuget package. Then it's a matter of creating your model and deserializing. Something like this:

public class MyObject
    int ExecID { get; set; }
    string Symbol { get; set; }
    //etc etc   

Then in your method:

using Newtonsoft.Json;

public class MyMethod(string json)
     List<MyObject> objList = JsonConvert.DeserializeObject<List<MyObject>>(json);

This code may not be exact, but should be something similar