我正在尝试通过客户端的ajax将数据发送到wcf方法
public class DynamicParse
{
// other properties
public dynamic Value {get;set;}
}
// wcf method
public void PostData(List<DynamicParse> list)
{
// parse list[0].Value
}
发送到wcf方法的javascript数组:
var data = [{ Value : 1 }, { Value : "test" }, { Value : { message : "hello" } }];
我的困难是当“Value”属性是对象类型时,我如何解析数据 - &gt;来自c#的{message:“hello”},
我尝试了反射和json序列化,到目前为止没有成功..
是否有另一种选项来解析没有动态类型的指定数据? 或者它适合这个问题吗?
感谢
答案 0 :(得分:0)
首先,JSON中没有特定的数据类型。你必须将它与模型匹配。
由于您似乎希望所有内容都是动态的,因此您只需检查名为Value的动态属性的数据类型。
public class DynamicParse
{
// other properties
public dynamic Value {get;set;}
}
// wcf method
public void PostData(List<DynamicParse> list)
{
// parse list[0].Value
foreach(var entry in list)
{
if(entry.Value is int)
{
int num = entry.Value;
}
else if(entry.Value is string)
{
string someString = entry.Value;
}
else if(entry.Value is MyCustomClass)
{
MyCustomClass myClass = entry.Value;
// Do something
}
else
{
// Do something
}
}
}
属性Value的数据类型将由.NET框架确定,因此您只需检查它是什么。
编辑:
您还可以将DynamicParse Value的属性从动态更改为对象,缺点是您必须手动转换它。
public class DynamicParse
{
// other properties
public object Value {get;set;}
}
所以你必须检查这样的值..
if(entry.Value is MyCustomClass)
{
MyCustomClass someObject = (MyCustomClass)entry.Value;
}
对于动态,不需要强制转换只分配值,而是需要对象进行强制转换。