我正在使用Json.NET将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,e@gmail.com,2,3),(29,c,d,7c4a8d,f@hotmail.com,1,4)" } ]
问题是应用程序在我上面的c#代码的第三行崩溃,消息错误是下一个:
Newtonsoft.Json.dll 中首次出现"System.ArgumentException"类型的异常
我的代码有什么问题?我的json字符串错了吗?或者我怎样才能正确地获取json对象?
有趣的是,c代码的第二行执行得很好,它打印出了正确的字符串。
你的respons字符串应该像这样正确格式化,
"{\"db\":\"6-y4XlvtqzR.sqlite\",\"users\":\"插入用户(id,first_name,last_name,password,email,cel,level)值(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,e@gmail.com,2,3),(29,c,d,7c4a8d,f@hotmail.com,1,4)";
string json = JsonConvert.SerializeObject(ts);
dynamic answer = JsonConvert.DeserializeObject(json);
Console.WriteLine(answer.ToString());
Console.WriteLine(answer["db"]);
}
}
可以使用指定的类型来完成,例如(假设ObjectType
是所需的返回类型):
var deserializedObject = JsonConvert.DeserializeObject<ObjectType>(responseString);
为什么要使用dynamic
?