我正在尝试在 Xamarin 应用程序中反序列化 JSON。我已经阅读了很多关于,但仍然有问题,所以,也许这里有人可以提供帮助:
我的 JSON 响应是这样的:
{
"Events":[
{
"id":7,
"name":"show",
"datefrom":"2012-01-01",
"timeto":"12:00:00",
"price":"3",
"imagen":"null",
"desc":"rock band playing",
"info":"Info about tickets",
"user":1,
"place":9,
"dateto":"2013-02-02",
"timeto":"12:30:00",
"Eventcategories":[]
},
{"id":2, name:...
Run Code Online (Sandbox Code Playgroud)
正如我所读到的,我创建了两个类,一个用于对象(事件),另一个用于 JSON 响应(事件响应),第二个类只有一个事件列表:
public class EventResponse
{
public ObservableCollection<Event> Events { get; set; }
public EventResponse(){
}
}
}
Run Code Online (Sandbox Code Playgroud)
并且 Event 类具有 JSON 返回的所有字段:
private int _id;
public int id {
get { return _id; }
set {
_id = value;
OnPropertyChanged ();
}
}
private string _nombre;
public string nombre {
get { return _nombre; }
set {
if (value.Equals (_nombre, StringComparison.Ordinal))
return;
_nombre = value;
OnPropertyChanged ();
}
}...
Run Code Online (Sandbox Code Playgroud)
在此之后,我希望我的应用程序解析这个 JSON,但我唯一能得到的是一个包含 JSON 内容的字符串。
var client = new RestClient("myip/api/events");
var request = new RestRequest (Method.GET);
var asyncHandle = client.ExecuteAsync<EventResponse>(request, response => {
//Here I see the json result
string jsonString=response.Content;
//The same
Console.WriteLine(response.Content);
//Nothing is shown here
Console.WriteLine(response.Data.Events[0].id);
});
Run Code Online (Sandbox Code Playgroud)
¿有人能给我一些关于如何查看json结果的线索吗?我想我正在遵循适当的步骤,但几个小时后我什么也做不了。谢谢
您错过了反序列化 JSON 字符串的最后一步。您可以使用 Json.net 将字符串反序列化为适当的对象。你可以这样做:
var eventResponse = JsonConvert.DeserializeObject<EventResponse>(jsonString);
Run Code Online (Sandbox Code Playgroud)
这是 Newtonsoft 的 Json.Net http://www.newtonsoft.com/json的链接
JSON 序列化程序很可能无法反序列化回对象。看起来您正在尝试将 VM 和 DTO 合并到一个类中,而 IMO 不是一个好主意。保持 DTO 尽可能简单。如果您将 EventResponse 更改为以下代码,您可以获得对象吗?
public class Event
{
public int id { get; set; }
public string name { get; set; }
public string datefrom { get; set; }
public string timeto { get; set; }
public string price { get; set; }
public string imagen { get; set; }
public string desc { get; set; }
public string info { get; set; }
public int user { get; set; }
public int place { get; set; }
public string dateto { get; set; }
public List<object> Eventcategories { get; set; }
}
public class EventResponse
{
public List<Event> Events { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
22044 次 |
最近记录: |