一次性嵌套JSON属性

时间:2018-10-08 13:55:39

标签: c# json json.net

我正在与一个API交互,该API的请求包含以下代码段:

     "occurrence":{  
        "type":"XYZ"
     }

有一些可以序列化的Newtonsoft JSON魔术,而不是用成员Occurence创建一个Type对象

  public string Occurence = "XYZ"

变成上面的格式?

1 个答案:

答案 0 :(得分:3)

您可以使用自定义JsonConverter从本质上将出现属性的JSON表示形式平整为类型。

class SomeModel
{
  [JsonConverter(typeof(OccuranceConverter))]
  public string Occurence { get; set; }
}

class OccuranceConverter : JsonConverter<string>
{
  public override string ReadJson(JsonReader reader, Type objectType, string existingValue, bool hasExistingValue, JsonSerializer serializer)
  {
    var json = JObject.Load(reader);
    return json.GetValue("type").Value<string>();
  }

  public override void WriteJson(JsonWriter writer, string value, JsonSerializer serializer)
  {
    var json = new JObject { ["type"] = value };
    json.WriteTo(writer);
  }
}