【问题标题】:Dynamic XML/JSON from WCF Service来自 WCF 服务的动态 XML/JSON
【发布时间】:2012-12-18 00:52:49
【问题描述】:

我正在创建一个旨在从数据库返回数据的 WCF 服务。该数据库中的数据被设计为尽可能通用,因此可以用于多种用途。只有一个键类型称为Entity,它上面有一个类型标志,它链接到另一个表,表示EntityType。

这是这两种类型的模型...

作为如何使用它的示例,假设类型为Continent、Country、State、City。有一个表用于计算对象的层次结构,所以为了简单起见,不必担心。

这就是目前数据以 XML 形式输出的方式...

最终我想要输出的是这样的......

问题是使用 .Net 的默认行为将其解析为 XML 和/或 JSON,它将使用我的 Entity 类作为 XML 节点名称,我不希望这种情况发生。我希望 XML 节点由与对象关联的 EntityType 命名。

我该如何做才能保持灵活性,以便我可以将另一个 EntityType 添加到数据库中,并且 XML/JSON 会带有相关的 XML 节点名称?

如果您需要,请寻求更多解释。由于这种性质非常笼统,我在这里解释起来有点困难...... :)

【问题讨论】:

    标签: c# json wcf xml-serialization


    【解决方案1】:

    由于您使用的是 WCF,因此需要数据协定,因为客户端需要知道如何处理响应。我认为不可能制作动态数据合约,但您可以为每个案例创建特定的数据合约并将属性重命名如下:

    [DataContract(Name = "Continent")]
    public class Entity
    {
        [DataMember]
        public int Id { get; set; }
    
        [DataMember]
        public string Name { get; set; }
    }
    

    或者您可以保留当前的实体数据协定并添加一个属性来确定客户端应如何解释结果。

    你怎么看?

    问候,

    【讨论】:

    • 我在我的通用数据合约中添加了一个类型,因为我没有从数据合约(例如 WSDL)的角度考虑这一点,这意味着这不能以我的方式完成建议。谢谢。
    猜你喜欢
    • 2010-11-15
    • 1970-01-01
    • 2015-09-07
    • 1970-01-01
    • 1970-01-01
    • 2013-03-09
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    相关资源
    最近更新 更多