Xamarin.Forms:JsonConvert.DeserializeObject始终返回null

时间:2019-03-14 20:39:11

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

我尝试使用Newtonsoft.Json将json字符串反序列化为对象。但是JsonConvert.DeserializeObject()总是返回null。

string json2 = "[{ 'id':1,'date':'2016-05-10T03:48:21','date_gmt':'2016-05-10T03:48:21','guid':{ 'rendered':'http://test.de/?p=1'},'modified':'2019-02-27T11:56:21'}]";

List<Product> myProducts = new List<Product>();

myProducts = JsonConvert.DeserializeObject<List<Product>>(json2); // allways null!?

我猜想原因在于类MyGuid中。永远不会到达属性Rendered的设置器。

我已经在这里阅读了有关此主题的所有问题,但找不到正确的答案。

这是整个代码示例:

namespace JsonToObject
{
    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();

            string json2 = "[{ 'id':1,'date':'2016-05-10T03:48:21','date_gmt':'2016-05-10T03:48:21','guid':{ 'rendered':'http://test.de/?p=1'},'modified':'2019-02-27T11:56:21'}]";

            List<Product> myProducts = new List<Product>();

            myProducts = JsonConvert.DeserializeObject<List<Product>>(json2); // allways null!
        }
    }

    public class Product
    {
        [JsonProperty("id")]
        public int Id { get; set; }

        [JsonProperty("date")]
        public string Date { get; set; }

        [JsonProperty("date_gmt")]
        public string Date_gmt { get; set; }

        [JsonProperty("guid")]
        public MyGuid MyGuid { get; set; }

        [JsonProperty("modified")]
        public string Modified { get; set; }
    }


    public class MyGuid
    {
        [JsonProperty("rendered")]
        public string Rendered { get; set; } // not reached!
    }

}

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:-1)

  

但是JsonConvert.DeserializeObject()始终返回null。

您的代码没问题。通常会返回一个json数组对象。

the official docs

如果直接检查myProducts,则它是一个数组对象,您需要指定数组中的哪个元素,哪个属性可以获取Rendered

由于您的json数组仅包含一个对象,因此可以将Rendered编写为:

myProducts[0].MyGuid.Rendered

然后这将返回:

http://test.de/?p=1

所有参数如下:

myProducts//------ System.Collections.Generic.List`1[App1.Views.MainPage+Product]
myProducts[0].Id //------1
myProducts[0].Date//------2016-05-10T03:48:21
myProducts[0].Date_gmt//------2016-05-10T03:48:21
myProducts[0].Modified//------2019-02-27T11:56:21
myProducts[0].MyGuid.Rendered//------http://test.de/?p=1

如果还有问题,您可以共享解决方案的链接。我会对其进行检查。