實體類
public class School
{
public string Location { get; set; }
public string Country { get; set; }
public List<Student> Students { get; set; }
}
public class Student
{
public string Name { get; set; }
public int Age { get; set; }
}
服務端程序
[HttpPatch]
public ActionResult Patch([FromBody]JsonPatchDocument<School> jsonPatch)
{
if (!ModelState.IsValid)
return Ok(ModelState.Values);
var s = new School
{
Location = "CN",
Country = "SH",
};
jsonPatch.ApplyTo(s);
return Ok(s);
}
客戶端Postman測試
Add
不存在添加,存在則修改
[
{
"op": "add",
"path": "/location",
"value": "ab"
},
{
"op": "add",
"path": "/students",
"value": [
{
"name": "zhang",
"age": 1
},
{
"name": "zhang",
"age": 1
}
]
}
]
remove
刪除屬性或數組元素
[
{
"op": "remove",
"path": "/location"
},
{
"op": "remove",
"path": "/students/0"
},
{
"op": "remove",
"path": "/students/"
}
]
replace
修改,刪除,添加
[
{
"op": "replace",
"path": "/location",
"value":"QWER"
},
{
"op": "replace",
"path": "/students",
"value": [
{
"name": "zhang",
"age": 1
},
{
"name": "zhang",
"age": 1
}
]
}
]
move
移動
[
{
"op":"move",
"from":"/students/0/name",
"path":"/location"
}
]
copy
賦值
[
{
"op":"copy",
"from":"/students/0/name",
"path":"/location"
}
]
test
測試,如果返回的值相同,則返回成功狀態碼。錯誤會拋出異常
[
{
"op":"test",
"path":"/students/0/name",
"value":null
}
]