2015-12-10 67 views
0

我使用Json.NET爲JSON字符串到.NET對象轉換JSON對象,我使用下面的代碼,我從這個answer有:Json.NET未解析字符串

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(answer [0] [「db」]);和一切工作 –

回答

0

有可能與指定的類型來做到這一點,如(假設ObjectType是所需的返回類型):

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

爲什麼你用dynamic

0

你responsestring的格式應妥善這樣,

「{\」 DB \ 「:\」 6 y4XlvtqzR.sqlite \ 「\ 」用戶\「:\」 INSERT INTO用戶(ID ,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"]); 

    } 
}