1

我想反序列化一个包含单个成员的 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);

我想一定有什么我错过了=(

4

2 回答 2

4

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

[DataContract]
protected internal struct Errors
{
    [DataMember]
    public string errorCode { get; set; }
    [DataMember]
    public string errorMessage { get; set; }
}
于 2013-07-01T21:30:50.943 回答
0

这可以帮助你。

    公共类键值
    {
        公共字符串错误代码
        {
            得到; 放;
        }

        公共字符串错误消息
        {
            得到; 放;
        }
    }

    字符串 json = @"[{""errorCode"":""code1"",""errorMessage"":""value1""}, {""errorCode"":""code2"",""errorMessage"" :""value2""}, {""errorCode"":""code3"",""errorMessage"":""value3""}]";
    JavaScriptSerializer 反序列化器 = new JavaScriptSerializer();
    列表项 = deserializer.Deserialize>(json);

    foreach(项中的变量项)
    {
        Console.WriteLine(item.errorCode + ":" + item.errorMessage);
    }


于 2019-12-05T11:50:59.397 回答