2013-12-13 3 views
0

У меня есть следующая строка: JSONNewtonSoft.JSON десериализации не работает

{ 
    [  
    { 
     "error": { 
        "typeofdevice": 678, 
        "valueconvert": "", 
        "message": "oops something went wrong" 
       } 
    } 
    ] 
} 

Что такое лучший способ десериализации это и получить значение «Message»?

Я пробовал:

JToken token = JArray.Parse(args.Result); 
string message = (string)token["description"]; 

Но тогда это говорит

Массив отсутствует индекс, и его не работает.

Репутация вопроса Я знаю .. Но я не могу понять это: S.

Grtz.

+2

Это не действует в формате JSON. –

+0

Почему бы и нет? Это официальный API, поэтому я предполагаю, что он должен работать, поскольку он работает для многих других людей. – Niels

+0

Попробуйте http://jsonlint.com/ –

ответ

1
using System; 
using System.Collections.Generic; 

namespace ConsoleApplication2 
{ 
    using Newtonsoft.Json; 

    internal class Program 
    { 
     private static void Main(string[] args) 
     { 
      string jsonString = 
       "[" 
       + "{" 
       + " \"error\": " 
       + "  {" 
       + "   \"typeofdevice\": 678," 
       + "   \"valueconvert\": \"\"," 
       + "   \"message\": \"oops something went wrong\"" 
       + "  }" 
       + "}" 
       + "]"; 

      List<Data> data = JsonConvert.DeserializeObject<List<Data>>(jsonString); 
      Console.WriteLine(data[0].Error.typeofdevice); 
     } 

     public class Data 
     { 
      public Error Error { get; set; } 
     } 

     public class Error 
     { 

      public string typeofdevice { get; set; } 
      public string valueconvert { get; set; } 
      public string message { get; set; } 
     } 
    } 
} 

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

0

Кроме того, если вы хотите проверить свои данные в формате JSON, если это правильно или нет, вы можете отправить свои данные здесь:

http://jsoneditoronline.org/index.html

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