C# MVC4 Web API - 生成的 JSON 应返回对象而不是对象的 $ref

2024-01-09

我有一个使用 EntityFramework for ORM 的 ASP.NET MVC 4 Web API 应用程序。

在我返回的 JSON 中,在某些情况下,多个父节点存在相同的子节点。在这些情况下,子节点的第一次出现及其所有成员都是完全可见的。任何后续出现的情况都会显示为第一个出现的 $ref。 我希望每次在返回的 JSON 中显示时都能看到完整的对象。

例如,而不是看到:

    [{
    "$id": "1",
    "userId": 1,
    "Badge": {
        "$id": "2",
        "badgeId": 1,
        "badgeName": "Gold"
        }
    }, {
    "$id": "3",
    "userId": 2,
    "Badge": {
        "$ref": "2"
        }
    }]

我倒要看看:

    [{
    "$id": "1",
    "userId": 1,
    "Badge": {
        "$id": "2",
        "badgeId": 1,
        "badgeName": "Gold"
        }
    }, {
    "$id": "3",
    "userId": 2,
    "Badge": {
        "$id": "4",
        "badgeId": 1,
        "badgeName": "Gold"
        }
    }]

基本上我想去掉 JSON 中的任何“$ref”。有办法吗?

Thanks!


一个简单的方法是编辑生成的实体类代码。对于每个实体类,都会有一个[DataContract(IsReference=true)]分配的属性。

像下面这样:

[EdmEntityTypeAttribute(NamespaceName="YourNamespace", Name="YourEntity")]
[Serializable()]
[DataContractAttribute(IsReference=true)]
public partial class YourEntity : EntityObject
{

将其更改为IsReference=false。这应该够了吧。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# MVC4 Web API - 生成的 JSON 应返回对象而不是对象的 $ref 的相关文章

随机推荐