ln.json/ln.json/mapping/JSONRPCCallMapping.cs

42 lines
1.1 KiB
C#

using System;
using ln.type.rpc;
namespace ln.json.mapping
{
public class JSONRPCCallMapping : JSONMapping
{
public JSONRPCCallMapping()
:base(typeof(RPCCall))
{
}
public override object FromJson(JSONMapper mapper, JSONValue jsonValue)
{
JSONObject json = jsonValue as JSONObject;
RPCCall call = new RPCCall();
if (json.ContainsKey("id"))
{
call.Identifier = json["id"].ToNative();
}
else
{
call.Identifier = Guid.NewGuid();
}
if (json.ContainsKey("module"))
call.ModuleName = JSONMapper.DefaultMapper.FromJson<string>(json["module"]);
if (json.ContainsKey("method"))
call.MethodName = JSONMapper.DefaultMapper.FromJson<string>(json["method"]);
if (json.ContainsKey("parameters"))
call.Parameters = JSONMapper.DefaultMapper.FromJson<object[]>(json["parameters"]);
else
call.Parameters = new object[0];
return call;
}
}
}