使用MVC 4 Web API,如何在XML中返回数组时更改ArrayOf节点的格式

时间:2012-10-24 10:41:43

标签: xml asp.net-mvc json xml-serialization asp.net-web-api

我想在返回IEnumerable<T>时控制根节点的输出。目前,我得到一个<ArrayOf_>节点作为根:

<ArrayOfMyClass xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <MyClass>
            <Number>1</Number>
    </MyClass>
    <MyClass>
            <Number>2</Number>
    </MyClass>
</ArrayOfMyClass>

我希望能够将此更改为其他内容(就此而言,没有命名空间):

<NewRoot>
    <MyClass>
            <Number>1</Number>
    </MyClass>
    <MyClass>
            <Number>2</Number>
    </MyClass>
</NewRoot>

我不想创建一个组类,因为虽然这适用于XML,但我不想在我的JSON输出中使用组类集合属性:

{
    "ListOfMyClass": [
        {
            "Number": 1
        },
        {
            "Number": 2
        }
    ]
}

相反,我希望保留它,就像默认情况下那样:

[
    {
        "Number": 1
    },
    {
        "Number": 2
    }
]

我意识到有一些似乎已经得到回答的类似问题,但这些问题都让我陷入了死胡同。我也可以自己破解结果(哎呀),但是我希望有一种最好的练习方式来提供这些东西;注释,格式化等。

有没有人在将JSON输出作为默认输出时取得了成功?

1 个答案:

答案 0 :(得分:0)

你试过这个吗?

public MyController : ApiController
{
    public NewRoot Get()
    {
        // return data
    }
}

public NewRoot: IEnumerable<MyClass>
{
}