0
我有一个element
类,它包含一个options
财产,期权类又可以改变其属性,例如可能有这2反序列化动态属性在ASP.net Web的API
Element1 = {
"Id": "1",
"Options": {
"Printable": "true",
"StackOverflow": "great"
}
}
Element2 = {
"Id": "2",
"Options": {
"Question": "awsome",
"PropertyDiferent": "empty"
}
}
在网页API我有一个这样的方法:
Public object Post ([FromBody] Element element)
{
SaveToMongo (element);
}
元素类:
Public class Element
{
Public dynamic options {get; set; }
Public string id {get; set; }
}
当我从Mongo拿起元素时,我没有任何问题。但是,当我使用Api web的post方法发送它时,它并不反序列化它自己,在expando对象中,因为它是从Mongo开始的。我怎么能在两端得到类似的行为?
编辑:我试图将选项从动态更改为newtonsoft JObject,但它没有奏效。现在选项也得到了保存,但是他们生成了我不想要的父亲。
"options" : {
"_t" : "Newtonsoft.Json.Linq.JObject, Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed",
"_v" : {
"padding" : {
"_t" : "JArray",
"_v" : [
{
"_t" : "JValue",
"_v" : [
]
},
{
"_t" : "JValue",
"_v" : [
]
},
{
"_t" : "JValue",
"_v" : [
]
},
{
"_t" : "JValue",
"_v" : [
]
}
]
},
"image" : {
"_t" : "JValue",
"_v" : [
]
},
"alt" : {
"_t" : "JValue",
"_v" : [
]
},
"url" : {
"_t" : "JValue",
"_v" : [
]
},
"width" : {
"_t" : "JValue",
"_v" : [
]
},
"backgroundColor" : {
"_t" : "JValue",
"_v" : [
]
},
"text" : {
"_t" : "JValue",
"_v" : [
]
}
}
},
有更多的属性,因为我直接从mongo中提取示例。
你可以使用Newtonsoft.Json的JObject而不是动态的吗? –
@PedroDrewanz我会尝试一下。因为这几天我的一些问题都是失败的。 –