xamarin android json响应

xamarin android json响应,android,json,xamarin,json.net,Android,Json,Xamarin,Json.net,我的新json文件中的json响应有问题 Task<string> downloadTask = httpClient.GetStringAsync(myJsonFile); string content = await downloadTask; var Messages = new List<NotificationClass>(); JObject jsonResponse = JObject.

我的新json文件中的json响应有问题

Task<string> downloadTask = httpClient.GetStringAsync(myJsonFile);
            string content = await downloadTask;
            var Messages = new List<NotificationClass>();
            JObject jsonResponse = JObject.Parse(content);
            IList<JToken> results = jsonResponse["Messages"].ToList();
但是,我希望从json获得响应,而不使用下面的代码这样的标题“Messages” 还有可能吗?我应该在
JsonResponse[“?”].ToList()中使用什么

谢谢。
Damian。

在原始json中,消息列表位于名为“messages”的字段中。这就是为什么需要执行[messages]来获取与“messages”键主体对应的JToken

由于现在您已经在更高的级别上直接拥有了一个列表,所以直接使用JsonConvert可能更容易,将字符串反序列化为消息对象列表(让消息成为一个具有名为MessageID、Name、Subject等字段的类)


在任何情况下,如果您希望以其他方式进行解析,最好尽可能保留旧的json,这主要是因为命名字段总是比只包含无键无名对象更受欢迎。

感谢您的解释。但是,当我这样做时,我遇到了一个错误“JObject不包含ToList的定义”@fisher1我已使用不同的方法更新了我的答案。谢谢:)我尝试使用建议的解决方案,但我遇到了一个错误,无法将类型“namespace.Message”隐式转换为“System.Collection.Generic List”抱歉,代码行有一个小的输入错误,我更新了答案:)谢谢。伟大的解决方案,这就是我一直在寻找的!你能控制服务器吗?不是的,那么你唯一的方法就是在反序列化客户端json时修改它,这是你已经在做的。谢谢:)这意味着在我的旧json文件中使用它会更好,而不是尝试让另一个正常工作?最好的解决方案是什么?
"Messages":[
{"MessageID" : "1",
"Name" : "Test",
"Subject" : "Subject",
"Message" : "Message",
"DateTimeCreated" : "19/03/2016"
},
{
"MessageID" : "2",
"Name" : "Test2",
"Subject" : "Subject2",
"Message" : "Message2",
"DateTimeCreated" : "18/03/2016"
}]
[{"MessageID" : "1",
"Name" : "Test",
"Subject" : "Subject",
"Message" : "Message",
"DateTimeCreated" : "19/03/2016"
},
{
"MessageID" : "2",
"Name" : "Test2",
"Subject" : "Subject2",
"Message" : "Message2",
"DateTimeCreated" : "18/03/2016"
}]
List<Message> message = JsonConvert.DeserializeObject<List<Message>>(content);
[JsonProperty("MessageID")]
public string MessageId { get; set; }