【发布时间】:2021-05-05 08:31:48
【问题描述】:
下面的 json 字符串是“作业”列表,顶层 Guid 是 assignmentId。 每个分配都有一个用于人员和分配给他们的项目的 Guid 标识符。 我已经尝试了许多基于 S.O. 上的 JSON 反序列化答案的变体。 我目前的尝试是
public class Assignments
{
public Dictionary<Guid, Assignment> Documents { get; set; }
}
public class Assignment
{
public Guid Id { get; set; }
public Dictionary<Guid, AssignmentDetail> Assignments { get; set; }
}
public class AssignmentDetail
{
[JsonProperty("personId")]
public Guid PersonId { get; set; }
[JsonProperty("itemId")]
public Guid TaskId { get; set; }
}
JSON 看起来像
{
"abd9657b-8f5f-4320-a47a-9d8442003217": {
"complete": null,
"due": null,
"estimate": null,
"itemId": "f921a6d4-ee77-4655-9c97-1e29c29c8796",
"personId": "c87b496f-0aba-4339-bb28-77d73283b504"
},
"353179f7-24ac-4331-ab86-41eabb8a9269": {
"complete": null,
"due": null,
"estimate": null,
"itemId": "d2a5de46-4100-47b8-8b8d-cad064c47fba",
"personId": "9705d366-0d00-481b-a3f1-c8e596f4a7c7"
},
"d04b346b-e941-4985-92b1-45cc65925edf": {
"complete": null,
"due": null,
"estimate": null,
"itemId": "631e653e-7595-46cb-b01a-06fb1e66759a",
"personId": "9705d366-0d00-481b-a3f1-c8e596f4a7c7"
}
}
当前操作是
var obj = JsonConvert.DeserializeObject<Assignments>(result);
obj在操作后为null。
忽略 JSON 字符串中缺少的前括号。不知何故,我不能再编辑该部分了。 谢谢
【问题讨论】:
-
您的 JSON 看起来像
Dictionary<GUID, SomeClass>,其中SomeClass有五个属性,其中三个可以为空(complete、due和estimate),另外两个是 GUID(@987654329 @ 和personId)。它也可能是一个字典,其中的值是字典(但我怀疑这不是你想要的(因为complete不太可能是 GUID)。你没有三个类。 -
感谢 FlyDog57。你踢回了正确的道路。答案很简单 var obj = JsonConvert.DeserializeObject
>(result);把它作为答案怎么样,这样你就可以得到一些分数了