【发布时间】:2017-12-19 20:20:41
【问题描述】:
我有一个 JSON 格式的 REST 响应,如下所示:{ "guid": "c75d06a8-a705-48ec-b6b3-9076becf20f4" }
当尝试将此响应字符串反序列化为 System.Guid 类型的 Object 时,如下所示:Newtonsoft.Json.JsonConvert.DeserializeObject(response.content, type);,抛出以下异常:
无法将当前 JSON 对象(例如 {"name":"value"})反序列化为类型 'System.Nullable`1[System.Guid]',因为该类型需要 JSON 原始值(例如字符串、数字、布尔值) , null) 以正确反序列化。 要修复此错误,请将 JSON 更改为 JSON 原始值(例如字符串、数字、布尔值、null)或将反序列化类型更改为正常的 .NET 类型(例如,不是整数等原始类型,而不是集合类型像数组或列表)可以从 JSON 对象反序列化。 JsonObjectAttribute 也可以添加到类型中以强制它从 JSON 对象反序列化。 路径“guid”,第 1 行,位置 8。
感谢任何帮助!
【问题讨论】:
-
错误告诉你为什么它不起作用:你试图将
{"guid":"guid"}反序列化为Guid。Guid类型没有guid属性。反序列化对象,然后将guid属性的值 反序列化为Guid。 -
您可以从字符串值创建新的 GUID,如错误所示。当您提取该字符串时,请尝试
new Guid(myGuidString)
标签: c# json json.net deserialization