我需要一些json反序列化的帮助。这是我第一次使用Json,所以我对它有一点了解。
我使用webclient获取以下字符串:
[{"name": "somename", "data": [[72, 1504601220], [null, 1504601280], ..., [125, 1504605840]]}]
并尝试使用
序列化它JsonConvert.DeserializeObject<TestObject>(jsonstring)
我的班级看起来像这样:
public class TestObject
{
[JsonProperty(PropertyName = "name")]
public string TargetName { get; set; }
[JsonProperty(PropertyName = "data"]
public List<?????> DataPoints {get; set;}
}
我如何设计我的类以获取某种集合中的数据值,以便每个条目包含括号内的两个值?
感谢您的耐心和帮助!
答案 0 :(得分:9)
您的数据是包含可空整数的数组列表(通过它的外观)
[JsonProperty(PropertyName = "data"]
public List<int?[]> DataPoints {get; set;}
答案 1 :(得分:2)
试试这个网站:http://json2csharp.com/ 如果您只有简单的JSON文本,这个网站可以节省您的大量时间。它可以帮助您将其转换为C#对象,但您仍需要仔细检查它。
var data = "[{\"name\": \"somename\", \"data\": [[72, 1504601220], [null, 1504601280], [125, 1504605840]]}]";
var obj = JsonConvert.DeserializeObject<List<TestObject>>(data);
public class TestObject
{
[JsonProperty(PropertyName = "name")]
public string TargetName { get; set; }
[JsonProperty(PropertyName = "data")]
public List<int?[]> DataPoints { get; set; }
}
答案 2 :(得分:0)
对此有一些解决方案,C#7.0还支持 ValueTuple ,例如此示例。
List<(int? ,int?)> DataPoints { get; set; }
// if it not work try this.
List<List<int?>> DataPoints { get; set; }
如果你的json内部数组元素数等于2,那么可以假设你使用值元组。
假设它对你有帮助。