【发布时间】:2017-11-17 15:15:14
【问题描述】:
我正在尝试反序列化这个 json 流:
[{"id":11,"title":"xyz","image":{"url":"/uploads/xxx/yyy/11/pic_1234.jpg"},"target":1}]
这是我用来反序列化流的代码的简化片段:
public class Template
{
[JsonProperty(PropertyName = "id")]
public string Id { get; set; }
[JsonProperty(PropertyName = "title")]
public string Title { get; set; }
[JsonProperty(PropertyName = "image")]
public string Image { get; set; }
[JsonProperty(PropertyName = "target")]
public string Target { get; set; }
}
string url = @"http://my-url-here";
IList<Template> templates = new List<Template>();
using (var webClient = new WebClient())
{
var json = webClient.DownloadString(url);
templates = JsonConvert.DeserializeObject<List<Template>>(json);
...
}
JsonConvert.DeserializeObject解析图像字段抛出异常:
...解析值时遇到意外字符:{。路径'[0].image',...
这是完全的例外:
Newtonsoft.Json.JsonReaderException 发生 H结果=0x80131500 消息=解析值时遇到意外字符:{。路径“[0].image”,第 1 行,位置 171。 来源=Newtonsoft.Json 堆栈跟踪: 在 Newtonsoft.Json.JsonTextReader.ReadStringValue(ReadType readType) 在 Newtonsoft.Json.JsonTextReader.ReadAsString() 在 Newtonsoft.Json.JsonReader.ReadForType(JsonContract 合同,布尔 hasConverter) 在 Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(对象 newObject,JsonReader 阅读器,JsonObjectContract 合同,JsonProperty 成员,字符串 id) 在 Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader 阅读器,类型 objectType,JsonContract 合同,JsonProperty 成员,JsonContainerContract containerContract,JsonProperty containerMember,对象现有值) 在 Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader 阅读器,类型 objectType,JsonContract 合同,JsonProperty 成员,JsonContainerContract containerContract,JsonProperty containerMember,对象现有值) 在 Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateList(IList 列表,JsonReader 阅读器,JsonArrayContract 合同,JsonProperty containerProperty,字符串 id) 在 Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateList(JsonReader 阅读器,类型 objectType,JsonContract 合同,JsonProperty 成员,对象现有值,字符串 id) 在 Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader 阅读器,类型 objectType,JsonContract 合同,JsonProperty 成员,JsonContainerContract containerContract,JsonProperty containerMember,对象现有值) 在 Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader 阅读器,类型 objectType,布尔 checkAdditionalContent) 在 Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader 阅读器,类型 objectType) 在 Newtonsoft.Json.JsonConvert.DeserializeObject(字符串值,类型类型,JsonSerializerSettings 设置) 在 Newtonsoft.Json.JsonConvert.DeserializeObject[T](字符串值,JsonSerializerSettings 设置) 在 Newtonsoft.Json.JsonConvert.DeserializeObject[T](字符串值) 在 C:\xxxxx...\Program.cs:line 19 中的 Promociones.JsonApi.GetTemplates() 处
【问题讨论】:
-
请发布完整错误,包括堆栈。
-
...还有
json的内容 -
url 当json尝试解析它时它只是字符串...不是图像..所以很明显它会抛出那个错误。
-
你有
Image作为string但在 json 中它是一个对象。 -
在
Template中Image只是一个字符串,但在json 中它是具有url 属性的对象...
标签: c# json windows serialization