如何将JSON数据反序列化为模型对象数组?

时间:2016-07-29 15:24:15

标签: c# asp.net json asp.net-web-api2

我有一个使用具有API端点的WebAPI2的C#/ ASP.Net项目。该端点提供了一组JSON对象作为对GET请求的响应。我使用本机对象的模型进行序列化,这是我理解的WebAPI2中的标准方法。

序列化发生在幕后'当我发送为IEnumerable模型输入的OK HttpActionResult时,

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

我有第二个应用程序,它接收模型数组的JSON字符串表示形式。对于具有单个元素的数组...

,要反序列化的入站字符串如下所示
[
  {
    "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"
        }
    }
  }
]

我应该如何重新补充JSON数据,请记住我在另一个项目中有可用的WebAPI2模型?

由于我控制了两端,我认为反序列化回到一系列模型应该是微不足道的,但我不知道该怎么做。我知道有很多可能的方法可以做到这一点,我正在寻找最安静或最干净的方式。

1 个答案:

答案 0 :(得分:1)

试试Newsoft.Json nuget包。然后是创建模型和反序列化的问题。像这样:

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

然后在你的方法中:

using Newtonsoft.Json;

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

此代码可能不准确,但应该类似