Json.NET未将字符串解析为Json对象



我正在使用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

相关内容

  • 没有找到相关文章

最新更新