我所拥有的是JSON格式的REST响应,如下所示:{ "guid": "c75d06a8-a705-48ec-b6b3-9076becf20f4" }
当尝试将此响应String反序列化为System.Guid类型的Object时,如下所示:Newtonsoft.Json.JsonConvert.DeserializeObject(response.content, type);
,抛出以下异常:
无法将当前JSON对象(例如{“name”:“value”})反序列化为类型'System.Nullable .1 [System.Guid]',因为该类型需要JSON原语值(例如字符串,数字,布尔值) ,null)正确反序列化。 要修复此错误,请将JSON更改为JSON原始值(例如string,number,boolean,null)或更改反序列化类型,使其成为普通的.NET类型(例如,不是像整数这样的基本类型,而不是集合类型像数组或List一样,可以从JSON对象反序列化。 JsonObjectAttribute也可以添加到类型中以强制它从JSON对象反序列化。 路径'guid',第1行,第8位。
感谢任何帮助!
答案 0 :(得分:4)
如果您不想创建只包含Guid值的类,可以使用动态变量:
string json = "{ \"guid\": \"c75d06a8-a705-48ec-b6b3-9076becf20f4\" }";
dynamic container = Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(json);
Guid guid;
Guid.TryParse(container.guid.ToString(), out guid);
Console.WriteLine(guid);
// c75d06a8-a705-48ec-b6b3-9076becf20f4
答案 1 :(得分:0)
自从我做过这类事以来,它已经有点了,不过我认为答案就在你的错误信息中。让它以字符串形式返回。在您的类中重写guid字符串属性以设置GUID类型的另一个属性,并在那里执行转换和错误处理。另一种方法是使用构造函数来帮助这里。希望这会给你一个方向。