您可以使用Json.Net以多种方式执行此操作。如果您不介意使用二维数字数组,您可以简单地反序列化为int[][]
:
string json = "[[57, 2], [57, 2], [58, 2], [55, 2], [60, 2], [54, 1], [59, 11]]";
int[][] values = JsonConvert.DeserializeObject<int[][]>(json);
如果您希望使用问题中提到的强类型类,则可以使用 aJsonConverter
来填充它。
像这样定义你的类:
[JsonConverter(typeof(SubmissionDataRowConverter))]
class SubmissionDataRow
{
public int Reading1 { get; set; }
public int Reading2 { get; set; }
}
像这样的转换器:
class SubmissionDataRowConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
return (objectType == typeof(SubmissionDataRow));
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
JArray array = JArray.Load(reader);
return new SubmissionDataRow
{
Reading1 = array[0].Value<int>(),
Reading2 = array[1].Value<int>()
};
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
throw new NotImplementedException();
}
}
然后你可以像这样反序列化:
List<SubmissionDataRow> rows =
JsonConvert.DeserializeObject<List<SubmissionDataRow>>(json);