最も単純な形式に縮小すると、別のクラスから継承するクラスがあります
public class BaseClass
{
protected int _property1;
public virtual int Property1
{
get
{
return _property1;
}
set
{
_property1 = value;
}
}
public int Property2 { get; set; }
}
public class InheritedClass : BaseClass
{
public override int Property1
{
set
{
_property1 = value + 1;
}
}
public int Property3 { get; set; }
}
そして WebAPI コントローラー
public class TestController : ApiController
{
// GET api/test/5
public InheritedClass Get(int id)
{
return new InheritedClass
{
Property1 = id + 1,
Property2 = id,
Property3 = id - 1
};
}
}
を使用してコントローラーから XML を要求するとGET api/test/1
、期待どおりのデータが得られます
<InheritedClass>
<Property1>3</Property1>
<Property2>1</Property2>
<Property3>0</Property3>
</InheritedClass>
しかし、JSON を要求すると、継承されたプロパティが省略されます。
{"Property3":0,"Property2":1}
私が欲しいのは
{"Property1":3, "Property3":0, "Property2":1}
InheritedClass をに変更することで修正できます
public class InheritedClass : BaseClass
{
public override int Property1
{
get
{
return _property1;
}
set
{
_property1 = value + 1;
}
}
...
しかし、私は本当にしたくありません-それはむしろウェットのようです. 何を与える?不足している JSONFormatter の設定はありますか?