值数组的嵌套数组的Json反序列化

时间:2020-09-08 16:20:39

标签: c# arrays json nested deserialization

在此先感谢您的帮助。我正在使用C#和Newtonsoft.Json来解析Bitfinex剩余调用的响应。这些不是对象数组,而是“值数组”和嵌套的“值数组数组”。

在下面从我这里收集的代码中,“ Test1”和“ Test2”都可以正常工作。但是,这实际上并不是我想要的! Test3和Test4是我要处理的结构类型。 (请注意,没有大括号!)

请给我指出正确的方向。

string Test1 = @"[123.456,""abc""]";
RootItem ri = JsonConvert.DeserializeObject<RootItem>(Test1);

string Test2 = @"{""roots"":[[123.456,""abc""],[789.012,""xyz""]]}";
ListRoot r = JsonConvert.DeserializeObject<ListRoot>(Test2);

string Test3 = @"[[123.456,""abc""],[789.012,""xyz""]]";

string Test4 = @"[""aabbcc"",102030,[[123.456,""abc""],[789.012,""xyz""]],""ddeeff"",405060]";

public class ListRoot
{
    [JsonProperty("roots")]
    public List<RootItem> ListRoots { get; set; }
}

[JsonConverter(typeof(JCRootItem))]
public class RootItem
{
    public class JCRootItem : JsonConverter
    {
        public override bool CanConvert(Type objectType)
        {
            return (objectType == typeof(RootItem));
        }

        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            JArray ja = JArray.Load(reader);
            return new RootItem
            {
                DecimalOne = (decimal)ja[0],
                StringTwo = (string)ja[1],
            };
        }

        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { }
    }

    public decimal DecimalOne { get; set; }
    public string StringTwo { get; set; }
}

0 个答案:

没有答案
相关问题