Can you summarize the following document?
        
  由於 JSON-RPC 使用 JSON,它具有與其相同的型別系統。JSON 可以表示四個基本型別(String、Numbers、Boolean 和 Null)和兩個結構化型別(Objects 和 Array)。任何時候文件涉及 JSON 資料型別,第一個字母都必須大寫:Object、Array、String、Number、Boolean、Null。包括 True 和 False 也要大寫。  在客戶端與任何被匹配到的服務端之間交換的所有成員名字應是區分大小寫的。 函式、方法、過程都可以認為是可以互換的。客戶端被定義為請求物件的來源及響應物件的處理程式。服務端被定義為響應物件的起源和請求物件的處理程式。  該規範的一種實現為可以輕而易舉的填補這兩個角色,即使是在同一時間,同一客戶端或其他不相同的客戶端。 該規範不涉及複雜層。

  JSON-RPC 2.0 的請求物件和響應物件可能無法在較舊的 JSON-RPC 1.0 客戶端或服務端正常執行,然而我們可以很容易在兩個版本間區分出 2.0。因為 2.0 版本中必須夾帶一個命名為 jsonrpc 且值為 2.0 的欄位。而 1.0 版本是沒有此欄位的。大部分的 2.0 實現應該考慮嘗試相容或者處理 1.0 的物件,即使不是對等的也應給其相關提示。

  傳送一個請求物件至服務端代表一個 RPC 呼叫,一個請求物件包含下列成員:  服務端必須回答相同的值如果包含在響應物件。這個成員用來兩個物件之間的關聯上下文。在請求物件中不建議使用 NULL 作為 id 值,因為該規範將使用空值認定為未知id的請求。另外,由於JSON-RPC 1.0 的通知使用了空值,這可能引起處理上的混淆。使用小數是不確定性的,因為許多十進位制小數不能精準的表達為二進位制小數。

  沒有包含 id 成員的請求物件為通知, 作為通知的請求物件表明客戶端對相應的響應物件並不感興趣,本身也沒有響應物件需要返回給客戶端。服務端必須不回覆一個通知,包含那些批量請求中的。  由於通知沒有返回的響應物件,所以通知不確定是否被定義。同樣,客戶端不會意識到任何錯誤(例如引數預設,內部錯誤)。

  RPC 呼叫如果存在引數則必須為基本型別或結構化型別的引數值,要麼為索引陣列,要麼為關聯陣列物件。

  當發起一個 RPC 呼叫時,除通知之外,服務端都必須回覆響應。響應表示為一個 JSON 物件,使用以下欄位:  響應物件必須包含 result 或 error 欄位,但兩個欄位不能同時存在。

  當一個 RPC 呼叫遇到錯誤時,返回的響應物件必須包含錯誤成員引數,並且為帶有下列成員引數的物件:  -32768 至 -32000 為保留的預定義錯誤程式碼。在該範圍內的錯誤程式碼不能被開發者自己定義,保留下列以供將來使用。錯誤程式碼基本與 XML-RPC 建議的一樣  除此之外剩餘的錯誤型別程式碼可供應用程式作為自定義錯誤。

  當需要同時傳送多個請求物件時,客戶端可以傳送一個包含所有請求物件的陣列。  當批量呼叫的所有請求物件處理完成時,服務端則需要返回一個包含相對應的響應物件陣列。每個響應物件都應對應每個請求物件,除非是通知的請求物件。服務端可以併發的,以任意順序和任意寬度的並行性來處理這些批量呼叫。  這些相應的響應物件可以任意順序的包含在返回的陣列中,而客戶端應該是基於各個響應物件中的 id 成員來匹配對應的請求物件。  若批量呼叫的 RPC 操作本身非一個有效 JSON 或一個至少包含一個值的陣列,則服務端返回的將單單是一個響應物件而非陣列。若批量呼叫沒有需要返回的響應物件,則服務端不需要返回任何結果且必須不能返回一個空陣列給客戶端。

  在以下的例子裡,codice_3表示資料傳送至伺服器,codice_4表示資料傳送至使用者端。  帶索引陣列引數的rpc呼叫: 帶關聯陣列引數的 RPC 呼叫: 通知: 不包含呼叫方法的 RPC 呼叫: 包含無效 JSON 的 RPC 呼叫: 包含無效請求物件的 RPC 呼叫: 包含無效 JSON 的 RPC 批量呼叫: 包含空陣列的 RPC 呼叫: 非空且無效的 RPC 批量呼叫: 無效的 RPC 批量呼叫: RPC 批量呼叫: 所有都為通知的 RPC 批量呼叫:

  以 RPC 開頭的方法名預留作為系統擴充套件,且必須不能用於其他地方。每個系統擴充套件都應該有相關規範文件,所有系統擴充套件都應是可選的。
JSON-RPC,是一個無狀態且輕量級的遠端過程呼叫(RPC)傳送協議,其傳遞內容透過 JSON 為主。相較於一般的 REST 透過網址(如 codice_1)呼叫遠端伺服器,JSON-RPC 直接在內容中定義了欲呼叫的函式名稱(如 codice_2),這也令開發者不會陷於該使用 PUT 或者 PATCH 的問題之中。 本規範主要定義了一些資料結構及其相關的處理規則。它允許執行在基於 Socket、HTTP 等諸多不同訊息傳輸環境的同一程序中。其使用 JSON(RFC 4627)作為資料格式。