Json 带有WCF/Web API的XSD simpleContent
在XSD中处理simpleContent标记时,我的Web服务在生成正确的XML/JSON时遇到问题 首先,我只有一个XSD文件(没有WSDL),其中包含以下内容(简化): 但我得到:Json 带有WCF/Web API的XSD simpleContent,json,xml,wcf,xsd,asp.net-web-api2,Json,Xml,Wcf,Xsd,Asp.net Web Api2,在XSD中处理simpleContent标记时,我的Web服务在生成正确的XML/JSON时遇到问题 首先,我只有一个XSD文件(没有WSDL),其中包含以下内容(简化): 但我得到: "altitudeCoordinate":{ "unit": "ft", "unitSpecified": "true, "Value": 2.1 我看到Xsd.Exe无法识别simpleContent限制 有没有办法让这种“标准”输出或.Net无法做到这一点 谢
"altitudeCoordinate":{
"unit": "ft",
"unitSpecified": "true,
"Value": 2.1
我看到Xsd.Exe无法识别simpleContent限制
有没有办法让这种“标准”输出或.Net无法做到这一点
谢谢
更新
我能够使它为我的WCF服务工作。解决办法很简单。。。只需将[XmlSerializerFormat]放在接口的顶部,瞧。
原因是默认序列化程序(DataContractSerializer)无法正确处理xml属性。
另外,请注意WCFStorm也使用DataContractSerializer:我发现即使在使用XmlSerializer时,WCFStorm中的XML也不好。然后我用SoapUI检查了一下,结果它工作了!(仍然损失了几个小时)
现在,让我们在我的Web API项目上进行这项工作,对于JSON…最后,我想出了一个解决方案。只是提醒一下:我的目标是不接触生成的类 用于SOAP/XML 正如我在更新中所述,解决方案非常简单,我只是在WCF接口上添加了以下属性:
[XmlSerializerFormat]
用于REST/JSON
解决方案是为转换不好的“麻烦”类定义元数据类型类
例如,下面是如何在自动生成的文件中定义VerticalDataValue类(我剥离了属性和名称空间):
请注意,只有在基类是局部的情况下,这才是可能的
当然,这是高维护代码,但至少不会影响自动生成的类
<altitudeCoordinate>
<Value>2.1</Value>
<unit>ft</unit>
<unitSpecified>true</unitSpecified>
</altitudeCoordinate>
"altitudeCoordinate": {
"@unit": "ft",
"text": "2.1"
}
"altitudeCoordinate":{
"unit": "ft",
"unitSpecified": "true,
"Value": 2.1
[XmlSerializerFormat]
public partial class VerticalDataValue {
/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public VerticalUnitEnum unit;
/// <remarks/>
[System.Xml.Serialization.XmlIgnoreAttribute()]
public bool unitSpecified;
/// <remarks/>
[System.Xml.Serialization.XmlTextAttribute()]
public double Value;
}
[MetadataType(typeof(VerticalDataValueMetaClass))]
public partial class VerticalDataValue { }
public class VerticalDataValueMetaClass
{
[JsonProperty("@unit")]
public VerticalUnitEnum unit;
[JsonIgnore]
public bool unitSpecified
[JsonProperty("text")]
public double value;
}