我有一個包含附加信息列表的對象。JSON.NET序列化列表作爲父對象的屬性
public class ParentObject
{
public string Prop1{ get; set; }
public string Prop2{ get; set; }
public IList<BaseInformation> AdditionalInformation{get;set;}
}
public abstract class AbstractInformation {}
public class ConcreteInformation1 : AbstractInformation
{
public string Concrete1Extra1{ get; set; }
public string Concrete1Extra2{ get; set; }
}
public class ConcreteInformation2 : AbstractInformation
{
public string Concrete2Extra1{ get; set; }
}
我想有這樣的
{
"Prop1": "MyValue1", //From ParentObject
"Prop2": "MyValue2", //From ParentObject
"Concrete1Extra1" : "Extra1" // From ConcreteInformation1
"Concrete1Extra2" : "Extra2" // From ConcreteInformation1
"Concrete2Extra1" : "Extra3" // From ConcreteInformation2
}
我知道我的目標看起來很容易出錯(有兩個名單中ConcreteInformation1對象將導致重複屬性名稱)的JSON對象,但我simpified我的問題和示例,以便只關注找到將列表作爲屬性組合到父對象中的解決方案。
我試圖寫我自己的JsonConverter,但這是o.AddBeforeSelf()
錯誤,因爲JObject.Parent爲空。
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
JToken t = JToken.FromObject(value);
if (t.Type != JTokenType.Object)
{
t.WriteTo(writer);
}
else
{
JObject o = (JObject)t;
o.AddBeforeSelf(new JProperty("PropertyOnParent", "Just a test"));
o.WriteTo(writer);
}
}
如果您將列表更改爲'Dictionary',您可以使用'[JsonExtensionData]'屬性獲得想要的結果。請參閱此[問題](http://stackoverflow.com/q/14893614/10263)和[答案](http://stackoverflow.com/a/23786127/10263)。 –
2014-09-03 18:58:56