我提供的是一个WebApi 2端点,其实现方式如下:
我的控制器很简单:
public IDictionary<MyClass, int> GetMyClasses(string id)
{
Dictionary<MyClasses, int> sample = new Dictionary<MyClasses, int>();
sample.Add(new MyClasses()
{
Property1 = "aaa",
Property2 = 5,
Property3 = 8
},10);
return sample;
}
MyClass的结构如下:
public class MyClass
{
string Property1 {get;set;}
int Property2 {get;set;}
int Property3 {get;set;}
}
当我运行我的 Web 服务时,辅助网页显示我期望的输出为:
{ "MyNamespace.MyProject.MyClass": 1 }
另一方面,XML示例是我想要的(除了我需要JSON而不是XML):
<ArrayOfKeyValueOfMyClassintl85fHlC_P xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<KeyValueOfMyClassintl85fHlC_P>
<Key xmlns:d3p1="http://schemas.datacontract.org/2004/07/MyNamespace.MyProject.MyClass">
<d3p1:Property1>sample string 4</d3p1:Property1>
<d3p1:Property2>8</d3p1:Property2>
<d3p1:Property3>5</d3p1:Property3>
</Key>
<Value>1</Value>
</KeyValueOfMyClassintl85fHlC_P>
</ArrayOfKeyValueOfMyClassintl85fHlC_P >
我还使用Postman运行了终端节点,确认返回的值与WebApi默认页面预览的值一致。
为什么json是“错误的”,而xml做得很好(我的意思是包含所有数据)?
更新:
我希望MyClass序列化成json格式如下:
{
"Property1": "sample string 4",
"Property2": 8,
"Property3": 5
}
这应该是我的字典键的结构,就像它在xml表示中一样。
谢谢
IDictionary<MyClass,int>
被序列化成什么样子? - StriplingWarrior