2

我在 ASP.NET Web Api 中遇到以下问题。假设我的代码中有以下代码ApiController

public void Post(Person person)
{
    // Handle the argument
}

我想做的是接受以下 JSON 请求:

{
    "person": {
        "name": "John Doe",
        "age": 27
    }
}

我想为每个模型创建一些持有对象,只是为了正确绑定传入的数据。在以前的 MVC 版本中,可以定义类似 Prefix 的东西来解决这个问题。

4

1 回答 1

2

让我报告我已经能够解决这个实施CustomJsonMediaTypeFormatter

public class EmberJsonMediaTypeFormatter : JsonMediaTypeFormatter
{
    public override System.Threading.Tasks.Task<object> ReadFromStreamAsync(
        Type type,
        System.IO.Stream readStream,
        System.Net.Http.HttpContent content,
        IFormatterLogger formatterLogger)
    {
        return base.ReadFromStreamAsync(
            typeof(JObject),
            readStream,
            content,
            formatterLogger).ContinueWith<object>((task) =>
        {
            var data = task.Result as JObject;
            var prefix= type.Name.ToLower();

            if (data[prefix] == null)
            {
                return GetDefaultValueForType(type);
            }

            var serializer = JsonSerializer.Create(SerializerSettings);

            return data[prefix].ToObject(type, serializer);
        });
    }
}

并替换默认值JsonMediaTypeFormatterGlobalConfiguration

于 2013-04-22T00:23:40.563 回答