JSON解析期间出错

时间:2016-04-03 17:22:41

标签: c# json json.net

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位。

我很确定,这段代码在另一个项目中有效。

我的错误是什么?

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);