我是 json 新手,我正在尝试将 json 响应转换为对象
json 是
"[{\"fields\":[[\"name\",\"value\",\"values\",\"error\"],[\"username\",\"test\",null,\"\"],[\"password\",\"test\",null,\"\"],[\"accountid\",\"\",null,\"\"],[\"rememberMe\",\"Y\",null,\"\"],[\"language\",\"en-US\",null,\"\"],[\"S\",\"test\",null,null]],\"success\":\"Y\",\"message\":\"User authenticated. Logging in.\"}]"
我写了两个类
public class fields
{
public string name { get; set; }
public string value { get; set; }
public string values { get; set; }
public string error { get; set; }
}
public class Demo
{
public List<fields> fields { get; set; }
public string message { get; set; }
public string success { get; set; }
}
我制作了这个序列化代码:
JsonSerializer serializer = new JsonSerializer();
Demo result = JsonConvert.DeserializeObject<Demo>(responseFromServer);
or this
Demo result = new JavaScriptSerializer().Deserialize<Demo>(responseFromServer);
错误是
Type '_Default+fields' is not supported for deserialization of an array
谢谢
巴罗兹
最佳答案
我尝试了你的代码,但对我来说有点不确定。但我可以向您展示我发现的内容,您可以尝试从这里开始工作:
首先:正如我对您的问题的评论一样,字符串的第一个和最后一个字符是 [ 和 ]。这意味着您的服务器正在向您发送一个数组。为了解决这个问题,我只是将您的反序列化行更改为:
Demo[] result = new JavaScriptSerializer().Deserialize<Demo[]>(responseFromServer);
第二:代码在反序列化到您的 fields 对象时仍然遇到问题,然后我意识到您正在接收一个字符串数组的数组,然后我将 Demo 类中的属性更改为:
public string[][] fields { get; set; }
希望这能有所帮助。
关于c# - 将 json 序列化为对象 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20492406/