【发布时间】:2018-02-01 08:42:24
【问题描述】:
我必须使用 Web 服务 (json)。 我使用 JavaScriptSerializer 建立了序列化/反序列化的通信。
在 99% 的情况下,它都可以正常工作,但是... 错误详细信息是这样返回的:
{"result":"FAIL","error":{"error_code":1,"desc":"INVALID_DATA","details":{"city":["City cannot be blank."]}}}
处理我创建的类:
public class ErrorObj
{
public int error_code { get; set; }
public string desc { get; set; }
public Dictionary<string, string[]> details { get; set; }
}
但是 somtethimes 'details' 是这样返回的:
{"result":"FAIL","error":{"error_code":1,"desc":"ERROR_OPTIONS","details":["Specifying a bank account"]}}
或
{"result":"FAIL","error":{"error_code":1,"desc":"INVALID_DATA","details":[]}}
要处理这个类应该是这样的:
public class ErrorObj
{
public int error_code { get; set; }
public string desc { get; set; }
public string[] details { get; set; }
}
如何构建对象 (ErrorObj) 来处理所有错误消息?
反序列化代码:
public static T DeSerializeObjectFromJsonString<T>(string jsonString)
{
T objectOut = default(T);
Type outType = typeof(T);
var obj = (T) new JavaScriptSerializer().Deserialize(jsonString, typeof(T));
return obj;
}
错误信息:
System.InvalidOperationException:类型 'System.Collections.Generic.Dictionary`2[[System.String, mscorlib, 版本=4.0.0.0,文化=中性,PublicKeyToken=b77a5c561934e089], 数组的反序列化不支持 [System.String[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]'。
【问题讨论】:
标签: c# json dictionary serialization javascriptserializer