奇怪的Json.net异常“输入字符串的格式不正确。”

时间:2013-05-06 12:03:47

标签: c# parsing windows-phone-7 json.net

我有两个相当复杂的对象,一个是成功解析,另一个是抛出异常。对象之间的唯一区别是2个双类型属性。我将它反序列化为

var item = JsonConvert.DeserializeObject<MyItem>(result.ToString());

其中MyItem包含两行,所以在第一种情况下它们应该是空的(item不能保存它们),在第二种情况下它们应该被设置(因为它们存在于json和反序列化对象中)。

跟踪:

at Newtonsoft.Json.Utilities.ConvertUtils.IntParseFast(Char[] value, Int32 start, Int32 length)
at Newtonsoft.Json.JsonTextReader.ParseNumber()
at Newtonsoft.Json.JsonTextReader.ParseValue()
at Newtonsoft.Json.JsonTextReader.ReadInternal()
at Newtonsoft.Json.JsonReader.ReadAsInt32Internal()
at Newtonsoft.Json.JsonTextReader.ReadAsInt32()
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.ReadForType(JsonReader reader, JsonContract contract, Boolean hasConverter)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

请根据复合对象的基元类型检查序列化对象的格式。并且还使用这部分代码

var item = JsonConvert.DeserializeObject<MyItem>(result.ToString(),
new JsonSerializerSettings(){DefaultValueHandling = DefaultValueHandling.Ignore});