Free-PascalまたはDelphiアプリケーションでJSON-RPC2メッセージを解析およびシリアル化します。 gitリポジトリ:https://github.com/r3code/pascal-jsonrpc-lite
https://github.com/teambition/jsonrpc-liteに触発されました。
JSON-RPC 2.0仕様の実装
uses ujsonrpc;isuperobjectが内部json-objectを形成したようにオブジェクトを返します。
JSON文字列オブジェクト表現を返します。
パラメーション:
indent :{boolean}インデント結果JSONescape :{boolean}エスケープスペシャルチャーJSON-RPC 2.0リクエストオブジェクトを作成し、ijsonrpcmessageオブジェクトを返します。 ijsonrpcmessageを実現します。
パラメーション:
id :{string | integer}method :{string}params :{ijsonrpcmessage}例:
var requestObj: TJsonRpcMessage;
requestObj := TJsonRpcMessage.Request( ' 123 ' , ' update ' , SO( ' {list: [1, 2, 3]} ' ));
writeln(requestObj.asString);
// {
// jsonrpc: '2.0',
// id: '123',
// method: 'update',
// params: {list: [1, 2, 3]}
// } JSON-RPC 2.0通知オブジェクトを作成し、ijsonrpcmessageオブジェクトを返します。
パラメーション:
method :{string}params :{ijsonrpcmessage}例:
var notificationObj: TJsonRpcMessage;
notificationObj := TJsonRpcMessage.notification( ' update ' , SO( ' {list: [1, 2, 3]} ' ));
writeln(notificationObj.asString);
// {
// jsonrpc: '2.0',
// method: 'update',
// params: {list: [1, 2, 3]}
// } JSON-RPC 2.0成功応答オブジェクトを作成し、ijsonrpcmessageオブジェクトを返します。
パラメーション:
id :{string | integer}result :{ijsonrpcmessage}例:
var msg: TJsonRpcMessage;
msg := TJsonRpcMessage.success( ' 123 ' , ' OK ' );
writeln(msg.asString);
// {
// jsonrpc: '2.0',
// id: '123',
// result: 'OK',
// } JSON-RPC 2.0エラー応答オブジェクトを作成し、IJSONRPCMESSAGEオブジェクトを返します。
パラメーション:
id :{string | integer}error :{ijsonrpcmessage} tjsonrpcerrorまたは兄弟を使用します例:
var msg: TJsonRpcMessage;
msg := TJsonRpcMessage.Error( ' 123 ' , TJsonRpcError.Create(- 32000 , ' some error ' , ' blabla ' ));
writeln(msg.asString);
// {
// jsonrpc: '2.0',
// id: '123',
// error: {code: -32000, 'message': 'some error', data: 'blabla'},
// } JSON-RPC 2.0ペイロード(String)を取得し、JSONに解析しようとします。成功した場合は、それがどのオブジェクトであるか(応答、通知、成功、エラー、または無効)を決定し、タイプと適切にフォーマットされたオブジェクトを返します。
パラメーション:
s :{string}{ijsonrpcparsed}のオブジェクトを返します。
解析中に検出されたメッセージのタイプが表示されます。タイプ:Jotinvalid、Jotrequest、Jotnotification、Jotsuccess、Joterror。
<{jsonrpcobjectType}の1つを返します。
保存されたRefはijsonrpcmessageにrefを参照します。
インターフェイスijsonrpcparsedを実現します。
tjsonrpcparsedインスタンスを作成します。
パラメーション:
objType :{tjsonrpcobjecttype}メッセージフォーマットタイプpayload :{ijsonrpcmessage}メッセージ本文JSON-RPC 2.0エラーオブジェクトについて説明します。インターフェイスijsonrpcmessageを実現します。
tjsonrpcerrorインスタンスを作成します。
パラメーション:
code :{integer}message :{string}data :{string | isuperobject | nil}オプション例:
var error: TJsonRpcError;
error = TJsonRpcError.Create(- 32651 , ' some error ' , ' some data ' );または
var error: TJsonRpcError;
error = TJsonRpcError.Create(- 32651 , ' some error ' , SO( ' { a: 1, extra: "some data"} ' ));エラーコード-32600で{tjsonrpcerror}オブジェクトを作成します。
パラメーション:
data :{string | isuperobject | nil} - 追加データエラーコード-32601を使用して{tjsonrpcerror}オブジェクトを作成します。
パラメーション:
data :{string | isuperobject | nil} - 追加データエラーコード-32602で{tjsonrpcerror}オブジェクトを作成します。
パラメーション:
data :{string | isuperobject | nil} - 追加データエラーコード-32603で{tjsonrpcerror}オブジェクトを作成します。
パラメーション:
data :{string | isuperobject | nil} - 追加データエラーコード-32700で{tjsonrpcerror}オブジェクトを作成します。
パラメーション:
data :{string} - エラーテキスト