2015-12-10 3 views
0

Я использую Json.NET преобразовать JSON строку в объект .net, я использую следующий код, который я получил от этого answer:Json.NET не разбор строки в объект JSON

dynamic answer = JsonConvert.DeserializeObject(responseString); 
Console.WriteLine(answer.ToString()); 
Console.WriteLine(answer["db"]); 

JSON строка это одна:

[ 
    { 
     "db":"6-y4XlvtqzR.sqlite", 
     "users":"INSERT INTO users (id, first_name, last_name, password, email, cel, level) VALUES (17,a,b,f7a9e,[email protected],2,3),(29,c,d,7c4a8d,[email protected],1,4)" 
    } 
] 

проблема заключается в том, что сбой приложения на третьей строке моего C# код выше, и сообщение об ошибке, является следующим:

Первый шанс исключение типа 'System.ArgumentException' произошло в Newtonsoft.Json.dll

Что такое probem с моим кодом? это моя строка json неправильно? или как я могу получить json-объект правильно?

Самое забавное в том, что вторая строка кода C# выполнена отлично и печатает правильную строку.

+3

'answer' массив –

+0

Вы правы, я установил Console.WriteLine (ответ [0] [ "дб"]); и все сработало –

ответ

0

Это можно сделать с типом указанного, например, (при условии, ObjectType будет нужный тип возвращаемого):

var deserializedObject = JsonConvert.DeserializeObject<ObjectType>(responseString); 

А почему вы используете dynamic?

0

Ваш responsestring должен быть отформатирован, как это,

"{\" дб \ ": \" 6-y4XlvtqzR.sqlite \ "\ "пользователей \": \" INSERT INTO пользователей (идентификатор , first_name, last_name, password, email, cel, level) VALUES (17, a, b, f7a9e, e @ gmail.com, 2,3), (29, c, d, 7c4a8d, f @ hotmail.com, 1 , 4) \ "}"

Я создал следующий образец и контролировал результат Json для объекта. Надеюсь, это поможет.

class Program 
{ 

    class TestClass 
    { 
     public string db { get; set; } 
     public string users { get; set; } 

    } 


    static void Main(string[] args) 
    { 
     TestClass ts = new TestClass(); 
     ts.db = "6-y4XlvtqzR.sqlite"; 
     ts.users = 
      "INSERT INTO users (id, first_name, last_name, password, email, cel, level) VALUES (17,a,b,f7a9e,[email protected],2,3),(29,c,d,7c4a8d,[email protected],1,4)"; 

     string json = JsonConvert.SerializeObject(ts); 
     dynamic answer = JsonConvert.DeserializeObject(json); 
     Console.WriteLine(answer.ToString()); 
     Console.WriteLine(answer["db"]); 

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