好きでも嫌いでも、私の究極の解決策は、現在は廃止されているJSON :: Syckに戻すことでした。これは、まさに私が望むことを実行します。これは、JSONへの論理的な非Mooseシリアル化の簡単な非Mooseの例です。
use JSON::Syck;
use URI;
use feature ':5.10';
say JSON::Syck::Dump(
bless { foo => URI->new("http://www.evancarroll.com") }
)
私はJSON::XSについて著者に書きましたが、彼は機能を追加するためのゲームではありませんでした。これは、JSON ::XSメンテナであるMarcLehmannからのテキストの一部です(この機能がない理由を示すために、多数のメッセージからコンテキストから外されています) 。
いいえ、PerlではなくJSONを使用しているためです。Perlは明らかに任意のPerlデータ構造を表すことができますが、JSONはそうではないので、何をすべきかを指示する必要があります。多くの人は「データ構造をダンプするだけ」のようなものを素朴に要求しますが、JSONは非オブジェクトであるすべてのperlデータ構造を表すことさえできません。
..。
あなたの質問は次のようなものです:なぜこの1MBのjpeg画像をASCIIファイルとして送信できないのですか?単にASCIIがオクテットを表すことができないからです。
..。
あるいは、ゴミを捨てて、JSON :: XSが自分にとって良いことをすることを期待したいだけかもしれません(しかし、他の人にとっては間違っています)-JSON::XSが魔法のようにあなたが望むものを推測する方法はありません。
..。
TO_JSONです。それ以外のものはただの推測です。
..。
次に、JSONが実際に表現できるものを試してみてください。オブジェクト階層をスローして「正しいこと」を期待するのは明らかに悪いソフトウェアエンジニアリングです。プロトコルでJSONが必要な場合は、ハッキングに頼らないようにしてから、JSONを送信してください。jsonライブラリが無効なものを修正することを期待しないでください。そもそもメッセージ。
気にしない以外は、どう対応したらいいのかわからない。ただ働く!LIKE::SYCK。オブジェクトがJSONに完全に変換されることは期待していません。しかし、私はそれが機能することを望んでいる80%に該当すると思います。jQueryのインポートにJSONを使用していますが、脳外科手術中に銀行取引を実行していません。最終的には、特別な役割を使用したくありません...送信されたものはすべて、jQueryJSONリクエストへの応答に役立つレベルに魔法のように変換されます。
アップデート
申し訳ありませんが、関係のないメディアでトローリングしていると誰かが言うまで、これらの返信を見逃しました。MooseX::StorageはMoose以外のクラスでは機能しません。JSON形式でスタッシュを表す一般的な方法が必要です。残念ながら、隠し場所のメンバーの一部はMooseオブジェクトです。XML :: SimpleはこれをData::Dumper
行うことができ、JSON :: Syckはこれを行うことができ、リストは続きます-私はそれをやりたいだけです。Perlと1:1である必要はありません。正直にJSON::Syck
言うと、デフォルトの方法にかなり近い方法で実行したいと思います。ここでの私の議論は、「どうすれば現在とJSON::XS
まったく同じように仕事をすることができるか」ということです。JSON::Syck
そして、あなたの答えはあなたができないということです。したがって、私は別のソリューションを採用していません。コードを書くにはお金がかかります、なぜ私は書きたいのですかto_JSON
Syckがすでにそれを正しく行っている場合...私は、Syckが望ましくないファッションをシリアル化していることを示すために否定的な発言者に負担がかかっていると言いたいです。また、AudryJSON::Syck
によってシードされたことを覚えておいてください。Audryは、決してトロール、バカ、または「脳損傷」ではありません。または、私の方法で投げられている他の用語のいずれか。私はこれで締めくくります:の悪いシリアル化ルートの欠如と望ましい出力はすでに機能していますJSON::Syck
これが私にとって良い選択であると私に信じさせます。そして、MooseX :: *:JSONは任意のMooseオブジェクトで何が違うのでしょうか?メソッドではなくMooseオブジェクトを受け入れるようにコードを記述できないのはなぜだと思いますか?そうでなければ、実質的な何かで答えてください-私はより良い反応を見たいと思います。ありがとう。(@jrockway、および@Etherに向けて)