我正在使用Ruby on Rails 3,我想以某种方式转换字符串to_json
和to_xml
。
要知道,我需要以这种方式在Rack方法中返回该字符串:
[404, {"Content-type" => "application/json"}, ["Bad request"]]
# or
[404, {"Content-type" => "application/xml"}, ["Bad request"]]
但我需要的只是转换字符串to_json
和to_xml
? 怎么可能呢?
答案 0 :(得分:5)
有时您必须在文件中添加require 'json'
(安装宝石后JSON implementation for Ruby)并执行以下操作:
JSON.parse("Bad request").to_json
或者您可以尝试:
ActiveSupport::JSON.encode("Bad request").to_json
但在您的情况下,最好的方法可能是正确回应:
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @somearray }
format.json { render :json => @somearray }
end
或者你可以这样做:
mystring_json = '{"bar":"foo"}'
[404, {'Content-Type' => 'application/json'}, [mysrting_json]] #json stuff
mystring_xml = '<?xml><bar>foo</bar>'
[404, {'Content-Type' => 'application/xml'}, [mysrting_xml]] #xml stuff
答案 1 :(得分:2)
在你的控制器中,只需传入XML字符串:
render xml: "<myxml><cool>fff</cool></myxml>"
答案 2 :(得分:1)
JSON遵循JavaScript语法,因此JSON中的字符串很简单:
[404, {"Content-type" => "application/json"}, ["'Bad request'"]]
至于XML,答案并非如此简单。您必须决定要使用哪种标记结构并从那里开始。请记住,XML文档至少具有根标记。因此,您可以返回这样的XML文档:
<?xml version="1.0" encoding="utf-8"?>
<response>Bad request</response>
这样做的一种方法是使用Builder gem:
但是,我不完全确定为什么你需要将一个字符串本身作为JSON或XML返回。 JSON和XML通常用于传输结构化数据,例如,数组,嵌套数据,键值对等。无论你的客户端是什么,它可能只是按原样解释字符串,没有任何JSON或XML ecoding,不是吗?