【问题标题】:How to Deserialise JSON Data to Array of Model objects?如何将 JSON 数据反序列化为模型对象数组?
【发布时间】:2016-07-29 15:24:14
【问题描述】:

我有一个使用具有 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 模型?

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

【问题讨论】:

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


    【解决方案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);
    }
    

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

    【讨论】:

    • Hot diggety,这正是我所希望的。对于以这种方式出现的其他人,代码正是 'List models = JsonConvert.DeserializeObject>(json);'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-14
    • 2016-09-06
    • 1970-01-01
    • 2011-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多