c# - 在 C# 中使用 DataContractJsonSerializer 使用 List<> 反序列化 JSON 对象

标签 c# json datacontractjsonserializer

我想反序列化一个包含单个成员的 JSON 对象;字符串数组:

{"errores":[{"errorCode":"campo1","errorMessage":"Errorenelcampo1"},{"errorCode":"campo2","errorMessage":"Errorenelcampo2"},{"errorCode":"campo3","errorMessage":"Errorenelcampo3"},{"errorCode":"campo4","errorMessage":"Errorenelcampo4"}]}"

这是我要反序列化的类:

[DataContract]
internal class rptaNo
{
    [DataMember]
    public List<Errors> errores { get; set; }

    [DataContract]
    protected internal struct Errors
    {
        [DataMember]
        public string codigo { get; set; }
        [DataMember]
        public string descripcion { get; set; }
    }
}

这是我尝试反序列化的方法:

public T Deserialise<T>(string json)
{
    DataContractJsonSerializer deserializer = new DataContractJsonSerializer(typeof(T));
    using (MemoryStream stream = new MemoryStream(Encoding.Unicode.GetBytes(json)))
    {
        T result = (T)deserializer.ReadObject(stream);
        return result;
    }
}

但是当我检查时,子列表的所有字段都是空白的,例如

MessageBox.Show(deserializedRpta2.errores[0].descripcion);

我想一定是我遗漏了什么 = (

最佳答案

您的模型需要具有与 JSON 对象名称相匹配的属性:

[DataContract]
protected internal struct Errors
{
    [DataMember]
    public string errorCode { get; set; }
    [DataMember]
    public string errorMessage { get; set; }
}

关于c# - 在 C# 中使用 DataContractJsonSerializer 使用 List<> 反序列化 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17414018/

相关文章:

c# - Crystal 报表 : How can I avoid nested subreports in this case?

c# - .Net 将 JSON 反序列化为 c# 对象

c# - 从另一个应用程序域返回的对象可以在调用域中序列化吗?

c# - 使用 System.Runtime.Serialization.Json 反序列化 JSON

c# - Unity3d检测平面上的点击

javascript - C# 使用 WebRequest 从脚本获取值

c# - 如何在 C# 中动态分配运行时的表格单元格宽度?

java - spring 4 ajax 响应 406 Not Acceptable

c# - Json.NET 和 NHibernate - 反序列化持久对象

c# - 使用 DataContractJsonSerializer 创建非 XML Json 文件