ルビーで:
class Obj
attr_accessor :price
end
my_ruby_obj = Obj.new
my_ruby_obj.to_jsonを配置します
"\"#<Obj:0x1c9b018>\""
サーバーは、jsonの戻りタイプを正しく定義するjquery ajaxリクエスト($ .getを使用)に応答して、my_ruby_obj.to_jsonをブラウザー(sinatra、content_type:jsonを使用)に送信し、次のことを行うコールバック関数(データ)を起動します。
console.log(data);
これは次を返します:
#<Obj:0x1c9b018>
では、通常ルビーオブジェクトで属性にアクセスするのと同じように、javascript / jqueryの「data.price」属性にアクセスするにはどうすればよいですか?("my_ruby_obj.price")
console.log(data.price);で試してみました。
> Undefined
ここで大きな部分が欠けているように感じます。それは、jsonがオブジェクトをどのように処理するかに関係していると思います。
何か助けはありますか? 可能であれば、jqueryでそれを行う正しい方法を探しています。
ありがとう
編集: 何が起こっているのかを理解しようとして、コールバックでこれを試しました:
newdata = $.parseJSON(data);
しかし、デバッグコンソールはそれで停止し、次のように表示されます。
> uncaught exception: Invalid JSON: #<Obj:0x1c9b018>
私はrubyオブジェクトで.to_jsonを呼び出しましたが、なぜそうなるのですか?..。
[[ new_edit: ]]
カスタムクラスからのオブジェクトのrubyjsonシリアル化が、私が想定したように機能していないようです。
ここから引用:https ://stackoverflow.com/a/4464721/988591
独自のクラスのオブジェクトでは、少し難しくなります。次のクラスの場合、to_jsonは。のようなものを生成します
"\"#<A:0xb76e5728>\""
。これはおそらく望ましくありません。オブジェクトをJSONとして効果的にシリアル化するには、独自のto_jsonメソッドを作成する必要があります。
例は次のとおりです...しかし..すごい...もっと簡単な方法はありませんか?