Analice los mensajes JSON-RPC2 en la aplicación Free-Pascal o Delphi. Repositorio de git: https://github.com/r3code/pascal-jsonrpc-lite
Inspirado en https://github.com/teambition/jsonrpc-lite.
Una implementación de las especificaciones de JSON-RPC 2.0
uses ujsonrpc;Devuelve el objeto como ISuperObject clonado de forma interna JSON-Object.
Devuelve una representación del objeto de cadena JSON.
Parámetros:
indent : {boolean} sangría resultante JSONescape : {boolean} Escape Special CharsCrea un objeto de solicitud JSON-RPC 2.0, devuelve el objeto IJSONRPCMessage. Se da cuenta de IJSONRPCMessage.
Parámetros:
id : {String | Integer}method : {String}params : {iJsonRPCMessage}Ejemplo:
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]}
// } Crea un objeto de notificación JSON-RPC 2.0, devuelve el objeto IJSONRPCMessage.
Parámetros:
method : {String}params : {iJsonRPCMessage}Ejemplo:
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]}
// } Crea un objeto de respuesta de éxito JSON-RPC 2.0, return IJsonRPCMessage Object.
Parámetros:
id : {String | Integer}result : {iJsonRPCMessage}Ejemplo:
var msg: TJsonRpcMessage;
msg := TJsonRpcMessage.success( ' 123 ' , ' OK ' );
writeln(msg.asString);
// {
// jsonrpc: '2.0',
// id: '123',
// result: 'OK',
// } Crea un objeto de respuesta de error JSON-RPC 2.0, return IJSONRPCMessage Object.
Parámetros:
id : {String | Integer}error : {IJSONRPCMESSAGE} use tjsonrpcerror o sus hermanosEjemplo:
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'},
// } Toma una carga útil JSON-RPC 2.0 (cadena) e intenta analizarla en un JSON. Si tiene éxito, determine qué objeto es (respuesta, notificación, éxito, error o inválido), y devuelva su tipo y objeto formateado correctamente.
Parámetros:
s : {String}Devuelve un objeto de {ijsonrpcparsed}.
Muestra el tipo de mensaje detectado durante el análisis. Tipos: Jotinvalid, JotRequest, Jotnotification, Jotsuccess, Joterror.
Devuelve uno de <{JSONRPCObjectType}.
Devuelve la referencia almacenada a IJSONRPCMessage.
Realiza la interfaz ijsonrpcparsed.
Crea una instancia TJSONRPCParsed.
Parámetros:
objType : {tjsonrpcObjectType} Tipo de formato de mensajepayload : {IJSONRPCMessage} Mensaje CuerpoDescribe el objeto de error JSON-RPC 2.0. Realiza la interfaz iJsonRPCMessage.
Crea una instancia tjsonrpcerror.
Parámetros:
code : {Integer}message : {String}data : {String | isuperObject | nil} opcionalEjemplos:
var error: TJsonRpcError;
error = TJsonRpcError.Create(- 32651 , ' some error ' , ' some data ' );o
var error: TJsonRpcError;
error = TJsonRpcError.Create(- 32651 , ' some error ' , SO( ' { a: 1, extra: "some data"} ' ));Crear {TJSONRPCError} objeto con código de error -32600.
Parámetros:
data : {String | isuperObject | nil} - datos adicionales Crear {TJSONRPCError} objeto con código de error -32601.
Parámetros:
data : {String | isuperObject | nil} - datos adicionales Crear {tjsonrpcerror} objeto con código de error -32602.
Parámetros:
data : {String | isuperObject | nil} - datos adicionales Crear {TJSONRPCError} objeto con código de error -32603.
Parámetros:
data : {String | isuperObject | nil} - datos adicionales Crear {TJSONRPCError} objeto con código de error -32700.
Parámetros:
data : {String} - Texto de error