gpt4 book ai didi

asp.net-mvc - Entity Framework 输出 XML 而不是 JSON

转载 作者:行者123 更新时间:2023-12-02 04:36:36 26 4
gpt4 key购买 nike

在我的 Controller 类中,我有很多方法可以输出格式正确的 JSON 数据。它们都执行数据库查询。例如

// GET api/User
public IEnumerable<Object> GetUsers()
{
var query = from user in db.Users
orderby user.Name
select new { Name = user.Name};

return query.AsEnumerable<Object>();
}

现在我想返回我的一个类的属性。

public IEnumerable<Object> GetProperties()
{
return typeof(MyClass)
.GetProperties(BindingFlags.Public | BindingFlags.Instance)
.Select(p => p.Name).ToList();
}

但是,不是输出 JSON Entity Framework 而是给我一些 XML,比如

<ArrayOfstring xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<string>Property1</string>
<string>Property2</string>
</ArrayOfstring>

我尝试在 Controller 方法中转换输出。

public string GetProperties()
{
var results = typeof(ComplexInfo)
.GetProperties(BindingFlags.Public | BindingFlags.Instance)
.Select(p => p.Name).ToList();
return JsonConvert.SerializeObject(results, Formatting.Indented,
new JsonSerializerSettings {
PreserveReferencesHandling = PreserveReferencesHandling.Objects
});
}

不幸的是,它仍在输出 XML。

<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">[
"Property1",
"Property2",
]</string>

如何确保从 Controller 中检索到 JSON 对象?

最佳答案

我的 web api 也遇到了同样的问题。解决方案是,您必须从 WebApiConfig 中删除 XmlFormatter。

 public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);

var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.
FirstOrDefault(t => t.MediaType == "application/xml");
config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType);
}
}

关于asp.net-mvc - Entity Framework 输出 XML 而不是 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21851014/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com