[英]Databricks - Pyspark - Handling nested json with a dynamic key
[英]HTTP PATCH: Handling arrays, deletion, and nested key creation
我正在尋找一個實用指南來實現PATCH
動詞,以便使用JSON在RESTful api中對名詞進行部分更新。 了解PATCH
是用於部分更新的,我們仍然缺乏關於刪除鍵,創建或更新嵌套鍵和數組的語法的標准化。
讓我們說我GET
一個對象:
// GET users/42
{
id: 42,
name: 'SimpleAsCouldBe',
city: 'San Francisco',
roles: ['viewer','editor'],
posts: {
'01': {},
'02': {},
}
}
...然后我想更新它:
// PATCH users/42
{
name: 'SimpleGuy', // CLEAR: update the key's value
email: 'hey@google.com', // CLEAR: add the new key
city: null // UNCLEAR: delete the key?
roles: ['owner'], // UNCLEAR: replace the whole array?
posts: {
'02': { title:'how to pop lock' }, // CLEAR: update nested key
'03': { title:'how to salsa' } // CLEAR: create new nested key
}
notes: {
'01': { title: 'a note title' } // CLEAR (but disallowed?): create wrapping key
}
}
PATCH rfc拒絕創建嵌套密鑰 。 我認為這是一個規范錯誤,因為創建嵌套鍵是非模糊的。
我可以發送一個完整的對象差異,就像這個庫生成的那樣,但是這使得添加或更新密鑰的明顯情況更加冗長。
如何使用HTTP PATCH以精益方式處理數組,刪除和嵌套鍵?
該規范清楚地詳細說明了如何格式化PATCH請求的JSON主體。 你使用的是完全不同的格式。 鑒於此,我並不感到驚訝。 身體應該看起來像:
[
{ "op": "replace", "path": "/name", "value": "SimpleGuy" },
{ "op": "add", "path": "/email", "value": "hey@google.com" },
{ "op": "replace", "path": "/city", "value": null },
{ "op": "replace", "path": "/roles", "value": [ "owner" ] },
{ "op": "add", "path": "/posts/02/title", "value": "how to pop lock" },
{ "op": "add", "path": "/posts/", "value": "03" },
{ "op": "add", "path": "/posts/03/title", "value": "how to salsa" },
{ "op": "add", "path": "/notes", "value": { "title": "a note title" } }
]
回去閱讀規范。 它甚至提供了解決您大部分問題的示例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.