Web ApiControllers でプロパティが JSON にシリアル化されないようにしようとしています。次の 2 つのシナリオが機能することを確認しました。
除外したいプロパティに次の属性を含めました。
[System.Web.Script.Serialization.ScriptIgnore]
[System.Xml.Serialization.XmlIgnore]
JavaScriptSerializer を使用してオブジェクトを手動でシリアル化すると、プロパティが除外されます。また、Web ApiController からシリアル化された XML 出力を表示すると、プロパティが除外されます。問題は、Web ApiController を介してシリアル化された JSON にまだプロパティが含まれていることです。プロパティを JSON シリアル化から除外するために使用できる別の属性はありますか?
アップデート:
すべてのテストがはるかに複雑なプロジェクトで行われており、隔離された環境でこれを試したことがないことに気付きました。私はこれを行いましたが、まだ同じ結果が得られています。失敗しているコードの例を次に示します。
public class Person
{
public string FirstName { get; set; }
[System.Web.Script.Serialization.ScriptIgnore]
[System.Xml.Serialization.XmlIgnore]
public string LastName { get; set; }
}
public class PeopleController : ApiController
{
public IEnumerable<Person> Get()
{
return new[]
{
new Person{FirstName = "John", LastName = "Doe"},
new Person{FirstName = "Jane", LastName = "Doe"}
};
}
}
生成された出力は次のとおりです。
JSON:
[
{
"FirstName" : "John",
"LastName" : "Doe"
},
{
"FirstName" : "Jane",
"LastName" : "Doe"
}
]
XML:
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfPerson xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Person>
<FirstName>John</FirstName>
</Person>
<Person>
<FirstName>Jane</FirstName>
</Person>
</ArrayOfPerson>