The HttpPatch action of patching List is same as Object.
[HttpPatch]
public IActionResult JsonPatchForClients([FromBody] JsonPatchDocument<List<Client>> patchDoc)
{
var clients = CreateClients();
patchDoc.ApplyTo(clients);
return new ObjectResult(clients);
}
private List<Client> CreateClients()
{
return new List<Client>()
{
new Client
{
Name = "Client0",
Description = "Description0",
Enabled = true
},
new Client
{
Name = "Client1",
Description = "Description1",
Enabled = true
},
new Client
{
Name = "Client2",
Description = "Description2",
Enabled = true
}
};
}
public class Client
{
public string Name { get; set; }
public string Description { get; set; }
public bool Enabled { get; set; }
}
Next, I will detail how to send Patch Body.
Here is the raw list:
[
{
"name": "Client0",
"description": "Description0",
"enabled": true
},
{
"name": "Client1",
"description": "Description1",
"enabled": true
},
{
"name": "Client2",
"description": "Description2",
"enabled": true
}
]
1.Add to the end of an array of "/-" and add to the first of an array of "/0"
[
{
"op": "add",
"path": "/-",
"value": {
"name": "Order3",
"description": "Description3",
"enabled": true
}
}
]
Result:
[
{
"name": "Client0",
"description": "Description0",
"enabled": true
},
{
"name": "Client1",
"description": "Description1",
"enabled": true
},
{
"name": "Client2",
"description": "Description2",
"enabled": true
},
{
"name": "Order3",
"description": "Description3",
"enabled": true
}
]
2. Replace Order3 to Order0
[
{
"op": "replace",
"path": "/0",
"value": {
"name": "Order3",
"description": "Description3",
"enabled": true
}
}
]
Result:
[
{
"name": "Order3",
"description": "Description3",
"enabled": true
},
{
"name": "Client1",
"description": "Description1",
"enabled": true
},
{
"name": "Client2",
"description": "Description2",
"enabled": true
}
]
3.Remve Client0
[
{
"op": "remove",
"path": "/0"
}
]
Result:
[
{
"name": "Client1",
"description": "Description1",
"enabled": true
},
{
"name": "Client2",
"description": "Description2",
"enabled": true
}
]
- The others(
move,copy,test) you can find in the microsoft doc.