c# - 如何将JSON字符串映射到C#方法的调用

标签 c# json

我想实现一个框架来将 JSON 字符串映射到 C# 方法的调用。例如,我有一个如下定义的 C# 类计算器。

// C# class
class Calculator
{
public:
    int add (int x, int y);
    int sub (int x, int y);
}

有一个JSON字符串如下。当框架接收到这个字符串时,它会创建/新建一个 Calculator 类的对象。然后调用它的函数add。并将值 12 和 43 作为参数传递给函数。

// JSON string
"{
\"class\":\"Calculator\",
\"method\":\"add\",
\"parameters\": {
    \"x\" : \"12\", \"y\" : \"43\"
    }
}"

是否有任何第 3 方库来实现这个?或者如何自己实现?

最佳答案

一个小的工作样本。当然,很多支票都不见了。 (使用 Json.Net )

string jsonstring = "{\"class\":\"Calculator\",\"method\":\"add\",\"parameters\": { \"x\" : \"12\", \"y\" : \"43\" }}";

var json = (JObject)JsonConvert.DeserializeObject(jsonstring);

Type type = Assembly.GetExecutingAssembly()
                    .GetTypes()
                    .First(t => t.Name==(string)json["class"]);

object inst = Activator.CreateInstance(type);
var method =  type.GetMethod((string)json["method"]);
var parameters = method.GetParameters()
        .Select(p => Convert.ChangeType((string)json["parameters"][p.Name], p.ParameterType))
        .ToArray();
var result =  method.Invoke(inst, parameters);

var toReturn = JsonConvert.SerializeObject(new {status="OK",result=result });

-

class Calculator
{
    public int add(int x, int y)
    {
        return x + y;
    }
}

关于c# - 如何将JSON字符串映射到C#方法的调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11986947/

相关文章:

c# - ASP C# 我可以使用 MVC 吗?

c# - 为什么更改屏幕上的 DPI 会影响对话框的布局?

c# - 如何触发http 1.1 4xx 5xx错误码? C#

java - 防止 JAXB 将字符串转换为数字 (JSON)

Android Json解析字符串无法转换为json对象报错

javascript - 以 Angular 将 map 转换为json对象

JavaScript - 将对象转换为字符串(停止工作)

c# - WPF 中出现奇怪的边框

c# - 应该修改什么来更改 C# 中的 Web 服务的 URL?

javascript - 如何将 JSON 数组与模板文字一起使用?