4

これと同様の質問が既にありますが、もっと複雑なことをしようとしているので、答えに満足していません。

リスト/単一オブジェクトを提供する Web サービスがあります。オブジェクトは、ユーザー、カテゴリなどです。オブジェクトの例を次に示します。

<UserObject name="foo" description="bar" category=<Category name="cat1" description="bar"> locations=[<Location id=1>, <Location id=2>] >

言い換えれば、オブジェクトはいくぶん複雑で、それらのオブジェクトの配列である可能性があります。私は次の方法を探しています:

  • これらのオブジェクトを JSON またはハッシュ文字列にシリアル化します
  • HTTP 経由で送信する
  • それらを OpenStruct オブジェクトに逆シリアル化します

オブジェクトをシリアライズしているサービスはRORではありません。オブジェクトを受信して​​デシリアライズしているアプリは ROR です。

これを行うには一般的な方法が必要です。and を使用してみましto_jsonJSON.parseが、オブジェクトを 1 つのレベルに逆シリアル化するだけです。したがって、上記の例では次のようになります。

<OpenStruct name="foo" description="bar" category="{\"name\"... JSON STRING}" locations="JSON STRING">

JSON STRING の代わりに、元のようにオブジェクト内のオブジェクトを取得したいと思います。

ルビー: 1.9.3

ありがとう

4

2 に答える 2

0

oj gemを調べて、その作成者である Peter Ohler に連絡を取った後、彼はとても親切で助けてくれたので、望ましい効果を得ることができました。

require 'oj'

# user instance is nested instance
json_string = Oj.dump user

# send over http
# de-serialize without domain classes (classes created by Oj gem)
user = Oj.load(json_string, { :auto_define => true })

この宝石について教えてくれた @josh-voigts に感謝します。

于 2013-10-24T08:28:08.247 に答える