从Jobject(Newtonsoft)继承来自未序列化的类的existents属性。
为什么Id和Name属性没有序列化?
library(rvest)
# This is the url you provided
url <- 'https://el.wikipedia.org/wiki/%CE%91%CE%B8%CE%AE%CE%BD%CE%B1'
a <- read_html(url) %>%
# This select only the first node
html_node('.free') %>%
# Extract the link
html_attr('href')
有什么想法吗?
答案 0 :(得分:9)
您想要做的原因是什么 - 原因很简单:JObject
实现IDictionary
并且Json.NET以特殊方式处理此案例。如果你的类实现了IDictionary
- Json.NET不会查看你的类的属性,而是会在字典中查找键和值。因此,为了解决您的问题,您可以这样做:
public class Test : JObject
{
public int Id
{
get { return (int) this["id"]; }
set { this["id"] = value; }
}
public string Name
{
get { return (string) this["name"]; }
set { this["name"] = value; }
}
}
如果您只想在对象上同时拥有动态和静态属性 - 则无需从JObject继承。相反,请使用JsonExtensionData
属性:
public class Test {
public int Id { get; set; }
public string Name { get; set; }
[JsonExtensionData]
public Dictionary<string, JToken> AdditionalProperties { get; set; } = new Dictionary<string, JToken>();
}
var test = new Test();
test.AdditionalProperties["new_pro"] = 123456;
test.Id = 1;
test.Name = "Dog";
var r = Newtonsoft.Json.JsonConvert.SerializeObject(test);