Извините, мой первоначальный ответ был бесполезным, вот лучший ответ.
Возможно, у вас возникли проблемы, потому что вы видели эти типы как целое и двойное значение (естественно для программиста на C#), однако Json ничего не знает об этих типах и представляет числа просто как десятичные числа.
Как уже сказал другой ответ, вы можете просто deserialize как список списков парных. Интересно, что есть возможность конвертировать его в более естественное представление.
Однако я не рекомендую это, поскольку он не является точно типичным при десериализации (тип исходного элемента теряется при преобразовании в десятичный, вы можете только предполагать, что этот способ будет работать)!
public class BarArrayConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
// Not properly implemented!
return true;
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
List<Bar> bars = new List<Bar>();
// Read the first token after the start array
reader.Read();
// Parse elements of the array
while (reader.TokenType == JsonToken.StartArray)
{
Bar b = new Bar();
// Convert these as necessary to your internal structure. Note that they are nullable types.
b.First = reader.ReadAsDecimal();
b.Second = reader.ReadAsDecimal();
// Read end array for this element
reader.Read();
// Pull off next array in list, or end of list
reader.Read();
bars.Add(b);
}
return bars;
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
throw new NotImplementedException();
}
}
class Bar
{
public decimal? First;
public decimal? Second;
}
class Foo
{
[JsonProperty("title")]
public string Title { get; set; }
[JsonConverter(typeof(BarArrayConverter))]
[JsonProperty("raw_data")]
public List<Bar> RawData { get; set; }
}
Практически разумно использовать десятичные типы. Единственная причина, по которой я могу это сделать, - это требование о том, чтобы оставить первое значение как целое число, это будет способом ограничения значения переменной более естественным образом.
Какие типы в «raw_data», что вы ожидали? Int и double, или они оба удваиваются? Если они разные, у них может возникнуть проблема, поскольку JSON технически для «raw_data» - это массив массивов. Вы могли бы реализовать собственный сериализатор для своего класса и поместить его во что угодно. –
Оба двухместных номера должны отлично работать для меня. Я не мог найти пример того, как структурировать класс для массива массивов. Есть ли у вас какие-либо намеки на то, как я должен объявить свойство raw_data? – Alienfluid
Конечно, я бы подумал, что double [] [] будет работать нормально, но я не пробовал. –