如何将 json 字符串转换为方法信息参数?



我正在尝试将json字符串转换为MethodInfo参数类型。我有以下几点:

Type type = typeof(MyClass);
MethodInfo mi = type.GetMethod(myMethod);
ParameterInfo [] parameteres=mi.GetParameters();
var jsonString="{"LastName":"Test"}"

使用这些代码,我的输入类型为mymethod,它是一个包含名为LastName的属性的类(类名为Class1(。

现在如何将jsonString转换为Class1

提示:我们在运行时获取类型Class1

因此,ParameterInfo calss 有自己的属性 ParameterType。 你应该得到这个参数和一些库来像这样使用 Json https://www.nuget.org/packages/Newtonsoft.Json/

然后代码会像

Type type = typeof(MyClass);
MethodInfo mi = type.GetMethod(myMethod);
ParameterInfo [] parameteres=mi.GetParameters();
ParameterInfo myParameter = parameteres.FirstOrDefault();
var jsonString="{"LastName":"Test"}"
var myObjParameter = JsonConvert.DeserializeObject(jsonString, myParameter.ParameterType );
//Then create an objevt of main class.
ConstructorInfo constr = type .GetConstructor(Type.EmptyTypes);
object classInstance = constr.Invoke(new object[]{});
//And call method for this object
mi .Invoke(classInstance , new object[]{ myObjParameter });

假设你的类看起来像这样

public class MyClass
{
public string LastName { get; set; }
private void myMethod(string LastName)
{
//do sutff
}
}

你可以像这样简单地反序列化字符串(你可以使用 Json.NET(

var jsonString = "{"LastName":"Test"}";
var lastName = JsonConvert.DeserializeObject<MyClass>(jsonString);

现在,您可以根据需要动态或静态使用lastName

最新更新