在使用“as JSON”呈现响应时更改 JSON 响应的 Content-Type
Posted
技术标签:
【中文标题】在使用“as JSON”呈现响应时更改 JSON 响应的 Content-Type【英文标题】:Change Content-Type of JSON response while using 'as JSON' to render response 【发布时间】:2011-11-01 07:51:46 【问题描述】:似乎在 Grails 中,默认 contentType 用于在使用如下内容时呈现 JSON 响应:
render Book.list(params) as JSON
是应用程序/json
当然还有一种更简单的方法来定义内容类型:
render(contentType:"text/json")
book(title:b.title,author:b.author)
有没有办法使用速记方式,并且仍然得到“text/json”的响应内容类型?
注意:示例取自here
【问题讨论】:
【参考方案1】:在您的 grails config.groovy
中,您可以设置以下 mime 类型属性。
grails.mime.types = [ html: ['text/html','application/xhtml+xml'],
xml: ['text/xml', 'application/xml'],
text: 'text/plain',
js: 'text/javascript',
rss: 'application/rss+xml',
atom: 'application/atom+xml',
css: 'text/css',
csv: 'text/csv',
all: '*/*',
json: ['application/json','text/json'],
form: 'application/x-www-form-urlencoded',
multipartForm: 'multipart/form-data'
]
尝试将 json 属性的值列表的顺序更改为 ['text/json','application/json']
【讨论】:
它不像我们所拥有的那样工作: /** * 将 JSON Writer 定向到 HttpServletResponse 的输出流并将 Content-Type 设置为 application/json * * @param response a HttpServletResponse * @ throws ConverterException */ public void render(HttpServletResponse response) throws ConverterException response.setContentType(GrailsWebUtil.getContentType("application/json", encoding));尝试渲染(response.getWriter()); catch (IOException e) throw new ConverterException(e); 在 JSON.java 中以上是关于在使用“as JSON”呈现响应时更改 JSON 响应的 Content-Type的主要内容,如果未能解决你的问题,请参考以下文章
与 AngularJS 一起使用时,Django 模板不呈现 JSON 响应
Fabric.js 对象在 DOM 加载时从 JSON 呈现时无法更改填充颜色
如何使用最新的 typeahead.js 库呈现 JSON 响应