我有一个来自Tika Rest Service的json,上面有消息接收者列表。列表如下所示:
"Message-Recipient-Address": [
"Mail1.Mail@mail.mail",
"Mail2.Mail@mail.mail"]
在我的模型中
[JsonProperty("Message-Recipient-Address")]
public IList<string> MailRecipientAddress { get; set; }
当尝试反序列化时,我得到以下错误消息。
转换值时出错“Mail1.Mail@mail.mail“”键入“System.Collections.Generic.IList` 1[System.String]”。路径“[0].Message Recipient Address”,第1行,位置319
这是我的反序列化程序(Restsharp)的代码
public class TikaDeserializer : IDeserializer
{
private Newtonsoft.Json.JsonSerializer serializer;
public TikaDeserializer(Newtonsoft.Json.JsonSerializer serializer)
{
this.serializer = serializer;
}
public T Deserialize<T>(RestSharp.IRestResponse response)
{
var content = response.Content;
using(var stringReader = new StringReader(content))
{
using(var jsonTextReader = new JsonTextReader(stringReader))
{
return serializer.Deserialize<T>(jsonTextReader);
}
}
}
public string DateFormat { get; set; }
public string Namespace { get; set; }
public string RootElement { get; set; }
public static TikaDeserializer Default
{
get
{
return new TikaDeserializer(new Newtonsoft.Json.JsonSerializer()
{
NullValueHandling = NullValueHandling.Ignore,
});
}
}
}
这里是主程序代码
class Program
{
static void Main(string[] args)
{
var request = new RestRequest("rmeta", Method.PUT);
request.AddHeader("Accept", "application/json");
request.AddParameter("application/octet-stream", File.ReadAllBytes(@"D:\Wienchol.msg"),ParameterType.RequestBody);
var response = Execute<List<ParsedDocument>>(request);
}
public static T Execute<T>(RestRequest request) where T : new()
{
var client = Client(@"http://localhost:9998");
client.AddHandler("application/json", TikaDeserializer.Default);
client.AddHandler("text/json", TikaDeserializer.Default);
client.AddHandler("text/x-json", TikaDeserializer.Default);
client.AddHandler("text/javascript", TikaDeserializer.Default);
client.AddHandler("*+json", TikaDeserializer.Default);
var response = client.Execute<T>(request);
if(response.ErrorException != null)
{
throw new SystemException(response.ErrorMessage);
}
return response.Data;
}
}
有什么线索表明我做错了什么,或者为什么这不起作用?提前谢谢你,
斯特凡