使用对象数组修补对象

Ste*_*ven 5 c# json json-patch .net-core asp.net-core

我在一所学校的课程和学生之间存在多对多关系。这是我的课程内容:

public class Course
{
    public Guid CourseId { get; set; }
    public string Name { get; set; }

    public ICollection<CourseStudent> Students { get; set; }
}

public class CourseStudent
{
    public Guid CourseId { get; set; }        
    public Guid StudentId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用 JsonPatch 来修补我的对象。我正在尝试添加到 的集合中Students,只是添加到集合的末尾:

[
  {
    "op": "add",
    "path": "/Students/-",
    "value": [
       { 
         "CourseId": "07264DC9-9FEB-42E2-B1EF-08D58F58C873", 
         "StudentId": "FB6E6988-4A56-4CA4-86E2-E23090FAD98F"
       }
     ]
  }
]
Run Code Online (Sandbox Code Playgroud)

但是当我提交这个时,我收到一个例外:

"ClassName": "Microsoft.AspNetCore.JsonPatch.Exceptions.JsonPatchException",

"Message": "值 '[\r\n {\r\n \"CourseId\": \"07264DC9-9FEB-42E2-B1EF-08D58F58C873\",\r\n \"StudentId\": \" FB6E6988-4A56-4CA4-86E2-E23090FAD98F\"\r\n }\r\n]' 对于目标位置无效。",

根据 Json Patch 文档,该结构对我来说看起来是正确的。知道为什么它不接受我的格式吗?

Ste*_*ven 2

最后弄清楚了,格式应该是:

[
  {
    "op": "add",
    "path": "/Students/-",
    "value":
       { 
         "CourseId": "07264DC9-9FEB-42E2-B1EF-08D58F58C873", 
         "StudentId": "FB6E6988-4A56-4CA4-86E2-E23090FAD98F"
       }
  }
]
Run Code Online (Sandbox Code Playgroud)