Json arry和其他属性反序列化(C#)

时间:2017-11-03 16:06:35

标签: c# json serialization

我有以下包含未命名数组和其他命名属性的json。我想知道如何使用Newtonsoft.Json将其反序列化为类。

  { 
    "message": "success",
    [
        {
            "timestamp": 1509723862,
            "tid": 84823616,
            "price": "7344.7",
            "amount": "0.36108123",
            "exchange": "bitfinex",
            "type": "sell"
        },
        {
           ...
        }
    ]
  }

我知道我可以使用反序列化数组 serializer.DeserializeObject< 列表<响应> >(serializedObject),但由于json包含其他属性,因此它不是json数组字符串。

是否有任何配置可用于告诉Newtonsoft.Json将数组反序列化为List,并且'消息'属性为字符串,在下面的类中:

public class Response
{
   public string Message {get;set;}
   public List<ResponseItem> ResponseItems {get;set;}

}

public class ResponseItem {
  string timestamp {get;set;}
  (...)
}

2 个答案:

答案 0 :(得分:1)

JSON不能在同一级别上同时拥有未命名的数组和命名值。 JSON无效。一切都是键控的,或者它是一个无键的数组。不能兼得。

答案 1 :(得分:0)

我认为联合两个Json并不是一个好主意。 使用你自己的反序列化器并传递你的两个Json:

<div class="row">
  <div class="large-12 columns">
    <div class="my-custom-block">
      MY CUSTOM BLOCK ==> Please extend to right edge of viewport
    </div>
  </div>
</div>

并使用它:

public static class ResponseDeserializer
{
    public static Response Deserialize(string psMessage, string psResponeItems)
    {
        dynamic loMessage = JsonConvert.DeserializeObject(psMessage);

        return new Response()
        {
            Message = loMessage.message,
            ResponseItems = JsonConvert.DeserializeObject<List<ResponseItem>>(psResponeItems)
        };
    }
}