Как получить доступ к массиву json.net? - PullRequest
0 голосов
/ 03 июля 2011
{
  "response": [
    50961,
    {
      "mid": 148014,
      "date": 1309642994,
      "out": 0,
      "uid": 39050402,
      "read_state": 1,
      "title": " ... ",
      "body": "здоров"
    },
    {
      "mid": 148012,
      "date": 1309641130,
      "out": 0,
      "uid": 56015000,
      "read_state": 1,
      "title": "...",
      "body": ")"
    },
    {
      "mid": 148010,
      "date": 1309639892,
      "out": 0,
      "uid": 56015000,
      "read_state": 1,
      "title": " ... ",
      "body": "Привет)"
    },

Как я анализирую это:

string json = e.Result;
var response = JObject.Parse(json);
Debug.WriteLine(response);
var messages_in = new iVk.App.MessagesInStructure[count_messages];
for (int i = 0; i < count_messages; i++)
{
    messages_in[i].readstate = Convert.ToBoolean(response["response"][i]["read_state"]);
    messages_in[i].text = response["response"][i]["body"].ToString();
    messages_in[i].otpravitel = response["response"][i]["uid"].ToString();
    messages_in[i].date_time = Convert.ToDateTime(response["response"][0][i]["date"]);
}

Но ничего из этого не работает .. Как я могу получить доступ к [ответу] [дате] и другим?У меня ошибка «Не удается получить доступ к дочернему значению в Newtonsoft.Json.Linq.JValue.»

1 Ответ

2 голосов
/ 03 июля 2011

Это неверно:

Convert.ToDateTime(response["response"][0][i]["date"]);

response ["response"] [0] является целым числом, поскольку первый элемент в response ["response"] равен "50961", поэтому response ["response"] [0] [i] произойдет сбой, так как вы пытаетесь проиндексировать что-то, что не является массивом

...