C# 使用Json.net反序列化Json集合时丢弃项

C# 使用Json.net反序列化Json集合时丢弃项,c#,.net,json,json.net,deserialization,C#,.net,Json,Json.net,Deserialization,我有一个JSON流,它发送集合,如下所示: [{"channel":"24e67e0d-1cad-4cc09e7af8523ef460fe", "op":"private", "origin":"broadcast", "stamp":1388680103991749}, "13886801043507640", "24e67e0d-1cad-4cc0-9e7a-f8523ef460fe"] List<string> strings = array.Chi

我有一个JSON流,它发送集合,如下所示:

[{"channel":"24e67e0d-1cad-4cc09e7af8523ef460fe",     
  "op":"private", 
  "origin":"broadcast", 
  "stamp":1388680103991749},
"13886801043507640",
"24e67e0d-1cad-4cc0-9e7a-f8523ef460fe"]
List<string> strings = array.Children<JValue>()
                            .Select(jv => jv.ToString())
                            .ToList();
第一个对象没有问题,但最后两个对象(
“138868801043507640”
“24e67e0d-1cad-4cc0-9e7a-f8523ef460fe”
)会引发
Json.Net
抛出异常,它们甚至不遵循
{field:name,field:name}
格式

如何使用
Json.Net
正确处理(或至少丢弃)这些对象


干杯,欢迎您的任何输入。

以下是一种使用JSON.Net从JSON中提取对象数据的方法

首先为对象定义一个类:

class Item
{
    public string channel { get; set; }
    public string op { get; set; }
    public string origin { get; set; }
    public long stamp { get; set; }
}
然后使用Json.Net的LINQ to Json API解析和过滤数组,只提取对象部分:

JArray array = JArray.Parse(json);
Item item = array.Children<JObject>().First().ToObject<Item>();
JArray数组=JArray.Parse(json); Item=array.Children().First().ToObject(); 如果可以有多个对象,可以将它们放入如下列表中(假设它们都具有相同的结构):

List items=array.Children()
.Select(jo=>jo.ToObject())
.ToList();
类似地,可以从数组中获取字符串值,如下所示:

[{"channel":"24e67e0d-1cad-4cc09e7af8523ef460fe",     
  "op":"private", 
  "origin":"broadcast", 
  "stamp":1388680103991749},
"13886801043507640",
"24e67e0d-1cad-4cc0-9e7a-f8523ef460fe"]
List<string> strings = array.Children<JValue>()
                            .Select(jv => jv.ToString())
                            .ToList();
List strings=array.Children()
.Select(jv=>jv.ToString())
.ToList();

感谢Brian给出了非常清晰的答案,它就像一个符咒。没问题;很乐意帮忙。