【发布时间】:2017-07-22 17:10:45
【问题描述】:
我正在 UWP 应用程序中解析 JSON 数据,这是我目前的工作代码:
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
}
private async void Button_Click(object sender, RoutedEventArgs e)
{
UsersObject MyGetRequest = await GetRequest();
ResultTextBlock.Text = MyGetRequest.ToString() + " - ";
}
public static async Task<UsersObject> GetRequest()
{
Uri geturi = new Uri("url"); //replace your url
System.Net.Http.HttpClient client = new System.Net.Http.HttpClient();
System.Net.Http.HttpResponseMessage responseGet = await client.GetAsync(geturi);
string response = await responseGet.Content.ReadAsStringAsync();
//return response;
var json = await responseGet.Content.ReadAsStringAsync();
var result = JsonConvert.DeserializeObject<UsersObject>(json);
return result;
}
还有一个 UserObject 类:
public class UsersObject { public List<UserObject> users = new List<UserObject>(); }
public class UserObject
{
public string username { get; set; }
public string password { get; set; }
public int Id { get; set; }
public object userscol { get; set; }
public string __href { get; set; }
}
我目前在线上遇到错误:UsersObject MyGetRequest = await GetRequest();其中说:“在 mscorlib.ni.dll 中发生了 'Newtonsoft.Json.JsonSerializationException' 类型的异常,但未在用户代码中处理
附加信息:无法将当前 JSON 数组(例如 [1,2,3])反序列化为 'HttpDemo.UsersObject' 类型,因为该类型需要 JSON 对象(例如 {"name":"value"})才能反序列化正确。”
我使用的 JSON 是:
[
{
"username": "user1",
"password": "10",
"Id": 1,
"userscol": null,
"__href": "/db/GroupDBTest/users/Id/1.json"
},
{
"username": "user2",
"password": "100",
"Id": 2,
"userscol": null,
"__href": "/db/GroupDBTest/users/Id/2.json"
}
]
【问题讨论】:
-
能否在此处调试并粘贴“json”变量的内容?
-
@Declan 问题在于反序列化来自服务器的响应。它在您期待一个对象时返回一个数组。如果没有示例响应,我能给出的最佳猜测是您应该这样做
JsonConvert.DeserializeObject<UserObject[]>(json);