2011-07-03 3 views
-3
{ 
    "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": "Привет)" 
    }, 

Как разобрать его:Как получить доступ к массиву json.net?

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"]); 
} 

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

+1

«Но ничего из этого не работает»: это не полезно. Вам нужно четко указать, с какими проблемами вы столкнулись. –

+0

Мне нужно проанализировать json array ('json') в моей структуре 'messages_in [i] .readstate = Convert.ToBoolean (response [" response "] [i] [" read_state "]);', но у меня есть ошибка Msgstr "Невозможно получить доступ к дочернему значению в Newtonsoft.Json.Linq.JValue." – SevenDays

+0

@jeffamaphone, серьезно? Ему не нужно переключать библиотеки только потому, что он имеет логическую ошибку. – jdc0589

ответ

2

Это неправильно:

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

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

+0

Вы пишете, но лучше сделать это для (int i = 1; ... – SevenDays

Смежные вопросы