JSON字符串:
[{ “ID”: “1”, “用户名”: “管理员”, “密码”: “anymd5hash”, “等级”: “2”}]
以下代码:
Newtonsoft.Json.Linq.JObject userData;
userData = Newtonsoft.Json.Linq.JObject.Parse(result);
MessageBox.Show(userData["username"].ToString());
执行此代码时,会出现错误:
从JsonReader读取JObject时出错。当前的JsonReader项目不是 一个对象:StartArray。路径'',第1行,第1位。
我很确定,这段代码在另一个项目中有效。
我的错误是什么?
答案 0 :(得分:4)
您没有提供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);