[英]How to convert json string to methodinfo parameter?
我正在尝试将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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.