【问题标题】:Serialize with JsonConvert使用 JsonConvert 序列化
【发布时间】:2013-10-22 08:26:53
【问题描述】:

我在 Windows Phone 应用中有一些课程:

[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 可以做到这一点吗?

【问题讨论】:

    标签: c# .net json serialization


    【解决方案1】:

    由于 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);
    

    【讨论】:

    【解决方案2】:

    jsonconvert 可以在这里序列化它try property name to datamember Name="" 例如:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多