0

したがって、xml と json (curr.rabl) の両方の出力をサポートする非常に単純な rabl ビューがあります。

collection @currencies => "currencies"

attributes :code, :name

私のrabl設定:

Rabl.configure do |config|
    config.include_json_root = false
    config.include_child_root = false
    config.xml_options = { :skip_types => true, :camelize => :lower }
    config.include_xml_root = false
end

rabl が xml および json に対して与える出力:

XML:

<currencies>
<currency>
<code>AFN</code>
<name>Afghan Afghani</name>
</currency>
<currency>
<code>AFA</code>
<name>Afghanistan Afghani</name>
</currency>
</currencies>

JSON:

{
currencies: [
{
code: "AFN",
name: "Afghan Afghani"
},
{
code: "AFA",
name: "Afghanistan Afghani"
}]}

私には、これは正しくありません。私が読んでいるものによると、JSONは次のようになります。

{
currencies: {currency: [
{
code: "AFN",
name: "Afghan Afghani"
},
{
code: "AFA",
name: "Afghanistan Afghani"
} ] }
}

を設定するconfig.include_child_root(/include_json_root) = trueと、次のようになります(まだ正しくありません)

{
currencies: [
{
currency: {
code: "AFN",
name: "Afghan Afghani"
}
},
{
currency: {
code: "AFA",
name: "Afghanistan Afghani"
} } ] }

まず、RABL が間違った json を出力しているという私の仮定は正しいですか? 2 つ目は、このビューだけでなく、多くの子オブジェクトがネストされている可能性のある他のビューに対しても、RABL でやりたいことを実行する方法はありますか?

4

2 に答える 2

1

明確にするために、これは間違いなく標準ではありません:

{
currencies: {currency: [
{
code: "AFN",
name: "Afghan Afghani"
},
{
code: "AFA",
name: "Afghanistan Afghani"
} ] }
}

RABL が作成する両方のフォームは標準です。ルートのないものとルートのあるもの。上記のことは意味がありません。API がそのように動作するのを見たことがありません。

于 2012-11-28T03:30:43.733 に答える
0

私は常にあなたが上に持っているものの2番目の形式を使用しました:

{
   currencies: [
   {
      currency: {  ... },
   },
   { 
      currency: { ... }
   }]
}

あなたが本当にこれをしたい場合:

{
   currencies: { currency: [ { ... }, { ... }] }
}

include_json_root を false に設定してカスタム ノードを使用できると思いますが、複雑になる可能性があります。

于 2012-11-27T21:24:10.520 に答える