Json.net从数组中的值开始

Json.net从数组中的值开始,json,vb.net,linq,json.net,Json,Vb.net,Linq,Json.net,嘿,我正在尝试查找以下json响应: { "threaded_extended": { "3570956071": [ { "id": [edited], "network_id": [edited], "sender_type": "user", "url": "[edited]", "sender_id": [edited], "privacy": "public", "body": { "rich": "[edited

嘿,我正在尝试查找以下json响应:

{
"threaded_extended": {
"3570956071": [
  {
    "id": [edited],
    "network_id": [edited],
    "sender_type": "user",
    "url": "[edited]",
    "sender_id": [edited],
    "privacy": "public",
    "body": {
      "rich": "[edited]",
      "parsed": "[edited]",
      "plain": "[edited]"
    },
    "liked_by": {
      "count": 0,
      "names": []
    },
    "thread_id": [edited],
我正在尝试查找3570956071,但我似乎无法使用JSON.net找到它

我的代码是:

    Dim url As String = "https://www.[edited].json?access_token=" & yAPI.userToken & "&threaded=extended"
    Dim request As HttpWebRequest = DirectCast(WebRequest.Create(url), HttpWebRequest)
    Dim response As HttpWebResponse = DirectCast(request.GetResponse(), HttpWebResponse)
    Dim reader As StreamReader = New StreamReader(response.GetResponseStream())
    Dim o As JObject = JObject.Parse(reader.ReadToEnd)

For Each msg3 As JObject In o("threaded_extended")("3570956071")
'etc etc....
我得到一个错误:对象引用未设置为对象的实例。

我甚至试过:

For Each msg3 As JObject In o("threaded_extended")
'etc etc....
并获取错误:无法将“Newtonsoft.Json.Linq.JProperty”类型的对象强制转换为“Newtonsoft.Json.Linq.JObject”类型。

最后就是这样做:

For Each msg3 As JObject In o("3570956071")
'etc etc....
给出错误:对象引用未设置为对象的实例。

我错过了什么

更新

o(“3570956071”)的值为

但正如您在json响应中看到的,它就在那里

执行o(“threaded_extended”)会给出调试中的编号

调试过程如下所示:

"3570956071": [
{
  "chat_client_sequence": null,
  "replied_to_id": [edited],
  "network_id": [edited],
  "created_at": "2013/08/27 19:26:41 +0000",
  "privacy": "public",
  "attachments": [],
  "sender_id": [edited],
  "liked_by": {
    "names": [],
    "count": 0
  },
  "system_message": false,
  "group_id": [edited],
  "thread_id": [edited],
  'etc etc

但从这一点继续,它表明错误无法将类型为“Newtonsoft.Json.Linq.JProperty”的对象强制转换为类型为“Newtonsoft.Json.Linq.JObject”异常
无法将类型为“Newtonsoft.Json.Linq.JProperty”的对象强制转换为类型为“Newtonsoft.Json.Linq.JObject”
是因为
作业对象的默认值成员,
Item(String)
,返回一个JToken对象,它是JContainer的超类,而JContainer又是JProperty和JObject的超类。如果您将For Each循环更改为如下所示

For Each msg3 As JToken In o("3570956071")
    If msg3.GetType() Is GetType(JObject) Then
        ..etc..
    ElseIf msg3.GetType() Is GetType(JProperty) Then
        ..etc..
    End If
Next

它应该可以防止无效转换发生。

此行不需要新语句吗
Dim o As NEW JObject=JObject.Parse(reader.ReadToEnd)
@Mertis我从json返回中收集的所有其他东西都有效,但这一个我知道不是因为这个。请仔细阅读代码。对于我在OP中尝试过的o(xxxxxxxxx)组合中的每个msg3作为JObject,在?@Mertis any的哪一行出现错误。这使我相信o没有实例化,因此我声明您需要使用我前面提到的新关键字。这不起作用。它甚至不知道如何处理JObject/JProperty变量。对每个msg3执行此操作,因为JToken In o(“threaded_extended”)是使其在该行不出错的唯一方法,但它仍然无法传递JObject/JProperty变量。错误是JObject'是一种类型,不能用作表达式。我的道歉。。。大脑编译器和iphone类型导致了错误的
type
evaluation类型。我正在更新样本。