JSON字符串:
[{"id":"1","username":"admin","password":"anymd5hash","rank":"2"}]
以下代码:
Newtonsoft.Json.Linq.JObject userData;
userData = Newtonsoft.Json.Linq.JObject.Parse(result);
MessageBox.Show(userData["username"].ToString());
当我执行这个代码时,会出现一个错误:
从JsonReader读取JObject时出错。当前JsonReader项不是一个对象:StartArray。路径",第1行,位置1。
我很确定,这段代码在另一个项目中也起了作用。
我犯了什么错?
您没有提供Json对象,而是提供了一个Json数组,其中只有一个对象:
// Json object:
{
"id": "1",
...
}
//Json array:
[
{
"id": "1",
...
}
]
因此,您可以更改json或json.Net代码(并在注释中查找JArray)。
顺便说一句,如果你事先知道属性,你真的应该创建一个.Net类来包含反序列化。
public class UserData
{
public string id { get; set; }
public string username { get; set; }
public string password { get; set; }
public string rank { get; set; }
}
// and then, in your code:
List<UserData> userData = Newtonsoft.Json.JsonConvert.DeserializeObject<List<UserData>>(result);