c# - 无法将反序列化 Json 对象绑定(bind)到类模型中

标签 c# json asp.net-mvc deserialization json-deserialization

反序列化此 Json 后,我无法将对象绑定(bind)到类模型中。

[{
    "products": {
        "prd10": null,
        "prd20": [
            {
                "pinno": "260158299582",
                "expirydate": "2019-12-31",
                "remark": "remark 1"
            }
        ],
        "prd30": [
            {
                "pinno": "782252223809",
                "expirydate": "2019-12-31",
                "remark": "remark 2"
            },
            {
                "pinno": "875928008089",
                "expirydate": "2019-12-31",
                "remark": "remark 3"
            }
        ],
        "user key": "333573536fbfe5164",
        "post date": "2019-07-24T17:43:56.888179+08:00"
    }
}]

public class products
{
    public List<prod_details> product{ get; set; }

}

public class prod_details
{
    public string pinno { get; set; }
    public string expirydate { get; set; }
    public string remark { get; set; }
}

products myModel = JsonConvert.DeserializeObject(json_string);

我尝试过动态结果,但仍然无法检索数据。 请帮忙!

最佳答案

下面是这个json反序列化的解决方案:

注意:我已将您的prd10、prd20等数组修改为通用名称,例如prd> 否则它将返回 null 模型

我已经修改了您的 Json 对象,如下所示:

[{
"products": {
    "prd": null,
    "prd": [
        {
            "pinno": "260158299582",
            "expirydate": "2019-12-31",
            "remark": "remark 1"
        }
    ],
    "prd": [
        {
            "pinno": "782252223809",
            "expirydate": "2019-12-31",
            "remark": "remark 2"
        },
        {
            "pinno": "875928008089",
            "expirydate": "2019-12-31",
            "remark": "remark 3"
        }
    ],
    "user key": "333573536fbfe5164",
    "post date": "2019-07-17"
}
}]

您必须根据您的 Json 对象创建如下所示的模型:

    public partial class ProductClass
    {
        [JsonProperty("products")]
        public Products Products { get; set; }
    }

    public partial class Products
    {
        [JsonProperty("prd")]
        public List<Prd> Prd { get; set; }
        [JsonProperty("user key")]
        public string UserKey { get; set; }

        [JsonProperty("post date")]
        public DateTimeOffset PostDate { get; set; }
    }

    public partial class Prd
    {
        [JsonProperty("pinno")]
        public string Pinno { get; set; }

        [JsonProperty("expirydate")]
        public DateTimeOffset Expirydate { get; set; }

        [JsonProperty("remark")]
        public string Remark { get; set; }
    }

现在你必须将 json 对象反序列化为类:

string JsonObj = "[{ products: { prd: null, prd: [ { pinno: 260158299582, expirydate: '2019-12-31', remark: 'remark 1' } ], prd: [ { pinno: 782252223809, expirydate: '2019-12-31', remark: 'remark 2' }, { pinno: 875928008089, expirydate: '2019-12-31', remark: 'remark 3' } ], 'user key': '333573536fbfe5164', 'post date': '2019-07-17' } }]";
List<ProductClass> result = JsonConvert.DeserializeObject<List<ProductClass>>(JsonObj.ToString());

这是输出的快照:

enter image description here

干杯!!

关于c# - 无法将反序列化 Json 对象绑定(bind)到类模型中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57181137/

相关文章:

c# - 使用 LightweightExcelReader 将 Excel 转换为 JSON

asp.net-mvc - MVC 2 编辑器最大长度和尺寸

c# - 在 .Net 中查找并替换 JSON 响应中的字符串

javascript - 将动态数据传递到 Power BI Embedded

c# - 检查开始和结束日期

javascript - 使用 javascript/jquery 从表格的给定行中提取 Cell/Td/tabledata 值

c# - 从 Linq GroupBy 中检索值

c# - 将 PostSharp 与 ILMerge 结合使用时出现问题

c# - 从 SQL Server dbmail 创建/生成 '.eml' 文件

c# - 为什么 SortedSet<T>.GetViewBetween 不是 O(log N)?