我有一个来自Tika Rest Service的json和一个消息收件人列表。名单如下:JSON.NET反序列化错误转换为IList <string>
"Message-Recipient-Address": [
"[email protected]",
"[email protected]"]
在我的模型,我有
[JsonProperty("Message-Recipient-Address")]
public IList<string> MailRecipientAddress { get; set; }
当尝试反序列化,我收到以下错误消息。
将值“[email protected]”转换为键入'System.Collections.Generic.IList`1 [System.String]'时出错。路径 '[0] .Message-接收者地址',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;
}
}
任何线索我做错了什么,或为什么这不工作?谢谢你在前进, 斯特凡
你是怎么使用反序列化?你可以发布代码吗? –
你的Json字符串不完整,请显示(缺少''''和'}'?)。在编辑的同时,您仍然没有向我们展示您称之为反序列化的位置。 – crashmstr
显示整个JSON请求。 – Wapac