我尝试使用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!
}
}
有人可以帮助我吗?
答案 0 :(得分:-1)
但是
JsonConvert.DeserializeObject()
始终返回null。
您的代码没问题。通常会返回一个json数组对象。
如果直接检查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
如果还有问题,您可以共享解决方案的链接。我会对其进行检查。