2014-10-14 4 views
0

Мои API возвращаетобращающиеся элементы в качестве Json.NET jarray в C#

{ 
    "result": [ 
    { 
     "id": "51473", 
     "name": "serv-vc", 
     "modifydate": "2014-10-09 18:29:48.033", 
     "expirationoff": "false", 
     "createdate": "", 
     "scheduleoff": "false", 
    } 
    ], 
    "status": 0 
} 

, которые я уже хранятся как JObject reponseobj

У меня возникли проблемы, выяснить, как получить доступ к responseobj["result"][0]["id"]

каждый раз, когда я пытаюсь, он дает массив о том, чтобы быть вне пределов.

Что мне не хватает?

Я также попытался

JArray resultarr = (JArray)responseobj.SelectToken("result"); 
resultarr[0]["id"] 

но имеют одни и те же результаты.

+0

Вы уверены, что в массиве результатов всегда есть данные? Вы получите исключение из пределов границ, если оно пустое, и вы пытаетесь получить доступ к элементу 0 (или любому другому элементу). –

ответ

0

Не уверен, что ваш вопрос, но это, кажется, работает для меня:

static void Main(string[] args) 
{ 
    JObject j = JObject.Parse(
     "{\"result\": [{\"id\": \"51473\", \"name\": \"serv-vc\", \"modifydate\": \"2014-10-09 18:29:48.033\", \"expirationoff\": \"false\", \"createdate\": \"\", \"scheduleoff\": \"false\", } ], \"status\": 0 }"); 
    var res = j["result"]; 
    Console.Out.WriteLine(res); 
    // show an arrays 

    var maybe = j["result"][0]; 
    Console.Out.WriteLine(maybe); 
    // shows the first object in the array 

    var fail = j["result"][0]["id"]; 
    Console.Out.WriteLine(fail); 
    // shows 51473 
} 
0

Попробуйте использовать:

JObject jObject = JObject.Parse("{\"result\": [{\"id\": \"51473\", \"name\": \"serv-vc\", \"modifydate\": \"2014-10-09 18:29:48.033\", \"expirationoff\": \"false\", \"createdate\": \"\", \"scheduleoff\": \"false\", } ], \"status\": 0 }"); 

А для доступа к различным узлам, вы можете использовать:

string name = jObject["result"]["name"].ToString(); 
string expirationoff = jObject["result"]["expirationoff"].ToString(); 

Или вы можете конвертировать result в новый json a work на нем

и доступ к result вы можете сделать:

var result = jObject["result"][0];

Помните, что вы можете иметь 0, 1, 2 ... х число результатов в вашем JSON, то вам необходимо сделать ссылку на первый должность.

+0

Вам не хватает индекса массива. 'result' - это массив, а' name' и 'expirationoff' - свойства объекта внутри массива. –

+0

@BrianRogers вы правы, я обновил ответ – MrMins

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