我有一个JSON流,它发送的集合如下所示:
[{"channel":"24e67e0d-1cad-4cc09e7af8523ef460fe",
"op":"private",
"origin":"broadcast",
"stamp":1388680103991749},
"13886801043507640",
"24e67e0d-1cad-4cc0-9e7a-f8523ef460fe"]
第一个对象没有问题,但最后两个对象("13886801043507640"
和 "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>();
如果可以有多个对象,您可以将它们放入这样的列表中(假设它们都具有相同的结构):
List<Item> items = array.Children<JObject>()
.Select(jo => jo.ToObject<Item>())
.ToList();
同样,您可以从数组中获取字符串值,如下所示:
List<string> strings = array.Children<JValue>()
.Select(jv => jv.ToString())
.ToList();