使用JsonConvert进行序列化

时间:2013-10-22 08:26:54

标签: c# .net json serialization

我在Windows Phone App中有一些课程:

[DataContract]
public class Function
{
    [DataMember(Name = "params")]
    public Params Parametrs { get; set; }
}

[DataContract]
public class Params
{
    [DataMember(Name = "params1")]
    public bool Params1 { get; set; }

    [DataMember(Name = "params2")]
    public string Params2 { get; set; }

    [DataMember(Name = "params3")]
    public MyClass Params3 { get; set; }
 }


public string GetRequestString(Params parametrs)
{
    Function func = new Function()
            {    
                Parametrs = parametrs
            };
    string json = JsonConvert.SerializeObject(func);
    return json;
}

Params params = new Params()
  {
        Params1 = true,
        Params2 = "MyString",
        Params3 = myClassObject,
  }

  var json = GetRequestString(params);

我的问题Params1Params2等可以有不同的类型。我不能在一个类Params中定义它。

我可以将一组参数,类型,键传递给函数并将其序列化为JSON吗?

JsonConvert有可能吗?

2 个答案:

答案 0 :(得分:2)

由于c#是强类型语言,因此需要在编译时定义属性的类型。但是,如果需要动态对象,可以使用Object基类。但是,您可能需要在使用前将它们转换或转换为相关类型。

[DataContract]
public class Params
{
    [DataMember(Name = "params1")]
    public object Params1 { get; set; }

    [DataMember(Name = "params2")]
    public object Params2 { get; set; }

    [DataMember(Name = "params3")]
    public object Params3 { get; set; }
}

Params param = new Params()
{
    Params1 = true,
    Params2 = "MyString",
    Params3 = new Object(),
};

var json = GetRequestString(param);

答案 1 :(得分:0)

jsonconvert可以在这里序列化try属性名称为datamember Name =“”  例如:

[DataMember(Name = "Params1")]
 public bool Params1 { get; set; }
相关问题