Json.Net不在Xamarin工作

时间:2018-03-13 01:40:57

标签: c# .net json xamarin xamarin-live-player

我在Xamarin类型解决方案中使用此代码

public async Task<Response> GetList<Publication>(string urlBase, string servicePrefix, string controller)
{
    try
    {
        var client = new HttpClient();
        client.BaseAddress = new Uri(urlBase);
        var url = string.Format("{0}{1}", servicePrefix, controller);
        var response = await client.GetAsync(url);
        var result = await response.Content.ReadAsStringAsync();

        if (!response.IsSuccessStatusCode)
        {
            return new Response
            {
                IsSuccess = false,
                Message = result,
            };
        }

        var list = JsonConvert.DeserializeObject<List<Publication>>(result);
        return new Response
        {
            IsSuccess = true,
            Message = "Ok",
            Result = list,
        };
    }
    catch (Exception ex)
    {
        return new Response
        {
            IsSuccess = false,
            Message = ex.Message,
        };
    }
}

当我调试它时,JsonConvert.DeserializeObject<List<Publication>>(result);不起作用,返回null ...

调查XAMARIN

enter image description here

我确定结果不为空

enter image description here

但如果我在控制台类型的解决方案中运行相同的代码,它就可以工作!!!

enter image description here

我使用同一个班级,有我的出版课

public class Publication
{
    public int IdPublicacion { get; set; }
    public string UrlVideo { get; set; }
    public object UrlImagen { get; set; }
    public string Text { get; set; }
    public string Titulo { get; set; }
    public DateTime Fecha { get; set; }
    public string Sacerdote { get; set; }
}

还有我的Json代码

[
{
    "IdPublicacion": 1,
    "UrlVideo": "https://www.youtube.com/watch?v=mQR0bXO_yI8",
    "UrlImagen": null,
    "Text": "Para fomentar la lectura en los niños es recomendable empezar con cuentos infantiles cortos que traten de aventuras divertidas y que capten la atención de los niños. De esta forma, los niños se divertirán a la vez que empiezan a cogerle el gusto a la lectura.\r\n \r\nLos relatos cortos con son los mejores para empezar a leer con los niños. Aunque hay multitud de cuentos tradicionales que son esenciales y que todo niño debería conocer, ya que han ido pasando de generación en generación.\r\n\r\nEn pequelandia.org se han seleccionado una serie de cuentos infantiles cortos para leer con niños. Son relatos cortos para hacer de la lectura un momento agradable y divertido, de forma que los niños empiecen a familiarizarse con la lectura y los libros.",
    "Titulo": "Fly me to the moon",
    "Fecha": "2018-03-07T00:00:00",
    "Sacerdote": "Julian"
},
{
    "IdPublicacion": 2,
    "UrlVideo": "https://www.youtube.com/watch?v=mQR0bXO_yI8",
    "UrlImagen": null,
    "Text": "Para fomentar la lectura en los niños es recomendable empezar con cuentos infantiles cortos que traten de aventuras divertidas y que capten la atención de los niños. De esta forma, los niños se divertirán a la vez que empiezan a cogerle el gusto a la lectura.\r\n \r\nLos relatos cortos con son los mejores para empezar a leer con los niños. Aunque hay multitud de cuentos tradicionales que son esenciales y que todo niño debería conocer, ya que han ido pasando de generación en generación.",
    "Titulo": "Titulo 2",
    "Fecha": "2018-03-06T00:00:00",
    "Sacerdote": "Julian"
}]

附加信息,当我看到列表时,会显示一条消息

&#34;无法转换类型为#System; RuntimeType&#39;的对象输入&#39; Mono.Debugger.Soft.TypeMirror&#39;。&#34;

最后有我的GitHub项目https://github.com/solartes/VesApp

3 个答案:

答案 0 :(得分:2)

解决。

问题? JSON.NET有Xamarin Live Player的问题,所以如果你在Xamarin Live Player中播放它就行不通,你必须在Android模拟器中运行它。

答案 1 :(得分:0)

尝试将Preserve属性添加到Publication类:

[Preserve(AllMembers = true)]
public class Publication

可能会发生构建剥离类的属性,因此它们丢失并且无法反序列化。

答案 2 :(得分:0)

我意识到在你的Debug中你没有指定你想要将json反序列化为List&lt;的类型。 T>。但是,在您的测试中,您确实指定需要一份出版物列表“List&lt; Publication&gt;”