从这里开始rails程序员。我试图将哈希转换为xml和json,但输出是不同的。to_json和to_xml在rails中给出不同的输出
这里的哈希:
{:exchangeRates=>[{:baseCurrency=>"USD", :quoteCurrency=>"EUR", :amount=>1, :nprices=>1, :conversions=>[{:date=>Tue, 20 Nov 2012 21:00:00 +0000, :ask=>"0.7813", :bid=>"0.7813"}]}, {:baseCurrency=>"CAD", :quoteCurrency=>"EUR", :amount=>1, :nprices=>1, :conversions=>[{:date=>Tue, 20 Nov 2012 21:00:00 +0000, :ask=>"0.7839", :bid=>"0.7837"}]}]}
下面是相应的渲染代码
format.json { render :json => { :response => rates.to_hash() } }
和这里的JSON(这是我想要什么)
{"response": {"exchangeRates": [
{
"baseCurrency": "USD",
"quoteCurrency": "EUR",
"amount": 1,
"nprices": 1,
"conversions": [{
"date": "2012-11-20T21:00:00+00:00",
"ask": "0.7813",
"bid": "0.7813"
}]
},
{
"baseCurrency": "CAD",
"quoteCurrency": "EUR",
"amount": 1,
"nprices": 1,
"conversions": [{
"date": "2012-11-20T21:00:00+00:00",
"ask": "0.7839",
"bid": "0.7837"
}]
}
]}}
这里是我的XML渲染代码:
format.xml { render :xml => rates.to_hash(), :root => 'response' }
下面是XML输出(有些情况下,我把阵列额外的标签):
<response>
<exchangeRates type="array">
<exchangeRate>
<baseCurrency>USD</baseCurrency>
<quoteCurrency>EUR</quoteCurrency>
<amount type="integer">1</amount>
<nprices type="integer">1</nprices>
<conversions type="array">
<conversion>
<date type="datetime">2012-11-20T21:00:00+00:00</date>
<ask>0.7813</ask>
<bid>0.7813</bid>
</conversion>
</conversions>
</exchangeRate>
<exchangeRate>
<baseCurrency>CAD</baseCurrency>
<quoteCurrency>EUR</quoteCurrency>
<amount type="integer">1</amount>
<nprices type="integer">1</nprices>
<conversions type="array">
<conversion>
<date type="datetime">2012-11-20T21:00:00+00:00</date>
<ask>0.7839</ask>
<bid>0.7837</bid>
</conversion>
</conversions>
</exchangeRate>
</exchangeRates>
</response>
正如你所看到的,它是增加额外的“阵列”属性标记,即exchangeRates和转换。我如何得到这个与json相同的格式?我也不希望任何标签上的属性。我知道你可以传入属性,例如:root =>'response',但是在查找了很长一段时间之后,我似乎无法在Web上找到这些属性的列表。
任何帮助将不胜感激,谢谢!
更新:测试了这确实也有'render'工作。 –
感谢您的回复。的是,我想完全摆脱该阵列标签,即,用于家庭的例子,我期望的XML将是:<?xml的版本= 1.0> ' '。在查看代码后,我认为这似乎不可能。也许我可以回到设计人员那里,让他们改变输出以包含该包装标签,因为这似乎是生成xml的正确方式。你怎么看? – willard
我明白了。但这不是你问的。你说你想让xml像JSON一样,并且在JSON中有一个名为'“exchangeRates”的关键字,接着是数组。如果你完全取出标签(我看到它的方式),你正在创建与JSON不同的xml。 –