具有自定义数据类型的JSON.NET转换类

时间:2018-07-11 03:53:18

标签: c# json json.net

我正在使用JSON.NET尝试将Bar类型转换为JSON。

public class Foo {
    String A;
    String B;
    Int32 C;
    DateTime D;
}

public class Bar {
    String E;
    String F;
    String G;
    Foo H;
}

我正在使用它来将Bar转换为JSON。

public String ConvertBar(Bar _bar) {
    String Result = JsonConvert.SerializeObject<Bar>(_bar);
    return Result;
}

应该输出如下内容:

{
  "E": "Another Value",
  "F": "Flamingos",
  "G": "Another Another Value",
  "H": [
    {
      "A": "Some Value",
      "B": "Some Other Value",
      "C": 42,
      "D": "2000-01-013T00:00:00Z"
    }
  ]
}

无论我做什么,ConvertBar()的输出始终为空。那么,如何在保留Foo的值的情况下将Bar转换为JSON?我听说您必须创建一个转换器,但是我没有这些经验。

1 个答案:

答案 0 :(得分:1)

您可以将字段转换为属性,也可以将字段转换为[JsonProperty]装饰

 public class Foo
    {
        [JsonProperty]
        String A;
        [JsonProperty]
        String B;
        [JsonProperty]
        Int32 C;
        [JsonProperty]
        DateTime D;
    }

    public class Bar
    {
        public Bar()
        {
            H = new Foo();
        }
        [JsonProperty]
        String G;
        [JsonProperty]
        Foo H;
        public String E { get; set; }
        public String F { get; set; }
    }

使用ConvertBar函数后,我得到以下输出。

{"G":null,"H":{"A":null,"B":null,"C":0,"D":"0001-01-01T00:00:00"},"E":null,"F":null}