当前位置: 首页 > 编程语言 > C#

反序列化GUID数组时的JSON.NETexception分享

时间:2023-04-10 23:59:30 C#

C#学习教程:反序列化GUID数组时出现JSON.NET异常当我使用内置的.NET序列化程序时,这很好用。首先,流中的原始字节如下所示:System.Text.Encoding.UTF8.GetString(rawBody);"{"recipeIds":["d9ede305-d244-483b-a435-abcf350efdb2"]}"然后我调用Give:Newtonsoft.Json.JsonSerializerserializer=newNewtonsoft.Json.JsonSerializer();parameters[0]=serializer.Deserialize(sr,operation.Messages[0].Body.Parts[0].Type);.Type是System.Guid[]然后我得到了异常:无法将当前JSON对象(例如{"name":"value"})反序列化为类型'System.Guid[]'因为该类型需要一个JSON数组(例如[1,2,3])正确反序列化。要修复此错误,请将JSON更改为JSON数组(例如[1,2,3])或更改反序列化类型,使其成为普通的.NET类型(例如,不是像整数这样的原始类型,也不是像这样的集合类型一个数组或列表),可以从JSON对象反序列化。JsonObjectAttribute也可以添加到类型以强制它从JSON对象反序列化。路径“recipeIds”,第1行,位置13。采用单个Guid(不是数组)的Web服务方法可以工作,所以我知道JSON.NET能够将字符串转换为GUID,但是当您当有一个字符串数组要反序列化时,它似乎会爆炸成一组GUID这是一个JSON.NET错误,有没有办法解决这个问题?我想我可以编写自己的自定义Guid集合类型,但我不想这样做。你需要一个包装类stringjson="{"recipeIds":["d9ede305-d244-483b-a435-abcf350efdb2"]}";varobj=JsonConvert.DeserializeObject(json);publicclassWrapper{publicGuid[]recipeIds;}–编辑–使用Linq以上就是C#学习教程:JSON.NETexceptionwhendeserializingGUIDarrays分享的全部内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注——varobj=(JObject)JsonConvert.DeserializeObject(json);varguids=obj["recipeIds"].Children().Cast().Select(x=>Guid.Parse(x.ToString())).ToList();本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: