Как преобразовать строку `to_json` и` to_xml` с помощью Ruby on Rails? - PullRequest
2 голосов
/ 22 февраля 2011

Я использую Ruby on Rails 3, и я хотел бы каким-то образом преобразовать строку to_json и to_xml.

Просто чтобы знать, мне нужно вернуть эту строку в стойкуметод таким образом:

[404, {"Content-type" => "application/json"}, ["Bad request"]]
# or
[404, {"Content-type" => "application/xml"}, ["Bad request"]]

Однако что мне нужно только для преобразования этой строки to_json и to_xml? Как это возможно?

Ответы [ 3 ]

5 голосов
/ 22 февраля 2011

Иногда вы должны добавить require 'json' в ваш файл (после установки гема, реализация JSON для 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
2 голосов
/ 15 января 2014

В вашем контроллере просто передайте строку XML:

render xml: "<myxml><cool>fff</cool></myxml>"

1 голос
/ 22 февраля 2011

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:

http://builder.rubyforge.org/

Однако я не совсем уверен, зачем вам нужно возвращать строку отдельно в виде JSON или XML. JSON и XML обычно используются для передачи структурированных данных, например, массивы, вложенные данные, пары ключ-значение и т. д. Каким бы ни был ваш клиент, он, вероятно, мог бы просто интерпретировать строку как есть, без какого-либо кодирования JSON или XML, нет?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...