C# 反序列化JSON(JSON.NET)

C# 反序列化JSON(JSON.NET),c#,json,json-deserialization,C#,Json,Json Deserialization,我需要一些关于json反序列化的帮助。这是我第一次使用Json,所以我对它有一点了解 我使用webclient获得以下字符串: [{"name": "somename", "data": [[72, 1504601220], [null, 1504601280], ..., [125, 1504605840]]}] 并试图用 JsonConvert.DeserializeObject<TestObject>(jsonstring) JsonConvert.DeserializeO

我需要一些关于json反序列化的帮助。这是我第一次使用Json,所以我对它有一点了解

我使用webclient获得以下字符串:

[{"name": "somename", "data": [[72, 1504601220], [null, 1504601280], ..., [125, 1504605840]]}]
并试图用

JsonConvert.DeserializeObject<TestObject>(jsonstring)
JsonConvert.DeserializeObject(jsonstring)
我的班级是这样的:

public class TestObject
{
    [JsonProperty(PropertyName = "name")]
    public string TargetName { get; set; }

    [JsonProperty(PropertyName = "data"]
    public List<?????> DataPoints {get; set;}
}
公共类TestObject
{
[JsonProperty(PropertyName=“name”)]
公共字符串TargetName{get;set;}
[JsonProperty(PropertyName=“data”]
公共列表数据点{get;set;}
}
我需要如何设计我的类来获取某种集合中的数据值,以便每个条目都包含括号中的两个值


感谢您的耐心和帮助!

您的数据是包含可为空整数的数组列表(从外观上看)

[JsonProperty(PropertyName=“data”]
公共列表数据点{get;set;}
试试这个网站: 如果你只有一个简单的JSON文本,这个网站可以节省你很多时间。它可以帮助你将它转换成C#object,尽管你仍然需要仔细检查它

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; }
}
var data=“[{\“name\”:“somename\”,“data\”:[[721504601220],[null,1504601280],[1251504605840]}]”;
var obj=JsonConvert.DeserializeObject(数据);
公共类测试对象
{
[JsonProperty(PropertyName=“name”)]
公共字符串TargetName{get;set;}
[JsonProperty(PropertyName=“data”)]
公共列表数据点{get;set;}
}

有一个解决方案,C#7.0也支持ValueTuple,例如本例

List<(int? ,int?)> DataPoints { get; set; }
// if it not work try this.
List<List<int?>> DataPoints { get; set; }
列出数据点{get;set;}
//如果不起作用,试试这个。
列出数据点{get;set;}
如果json内部数组元素计数等于2,那么可以假设您使用值元组


假设它对您有帮助。

这看起来很有希望,但我得到了一个JsonSerializationException(“无法反序列化当前JSON数组[…],因为该类型需要一个JSON对象[…]才能正确反序列化。”)@ErikT。看起来您从控制台复制了一些JSON字符串,其中包含此字符(
)而不是真正的JSON文本。请看这个实时示例,它在没有该字符的情况下工作:insead of的Study me used。它现在工作正常。谢谢!感谢您的网站推荐。看起来非常有用,尤其是对于较大的字符串。
List<(int? ,int?)> DataPoints { get; set; }
// if it not work try this.
List<List<int?>> DataPoints { get; set; }