問題タブ [jsonpickle]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
173 参照

python - Python オブジェクトを eulxml.xmlmap.XmlObject で作成された JSON にシリアライズする

使用して作成する python オブジェクトのセットがありますeulxml.xmlmap.XmlObject(主にこの方法を使用するのは、eXistDB サーバーで作業しており、eulxml が非常に簡単なマッピング機能を提供するためです)。eXistDB を正常にクエリし、作成したいくつかの python オブジェクトに xquery 結果セットをロードできます。私の問題は、これらのオブジェクトをWebサーバーに渡すときに、これらのオブジェクトをJSONとして書き出せるようにしたいことです(フロントエンドにAngularを使用)。

jsonpickle を使用してみましたが、eulxml がある種の遅延読み込みマジックを行っているようです。オブジェクトを json にシリアル化するために jsonpickle を標準的に呼び出すと、次の結果が得られます。

パイソンコード:

結果:

属性のタイプのみを出力しているようで、属性自体の値は出力していないようです。jsonpickle コードを unpickable=False に設定するように変更すると、得られるのは json の空のセットだけです (つまり、正しい数の中括弧と括弧に関して構造は存在しますが、文字通りデータはありません。json の出力は次のとおりです。中括弧と括弧のみ)。

フィールドの値にアクセスしようとして、(少なくともアクセスしたフィールドでは) 動作する可能性のある json を出力しようとすると、おそらくうまくいかないと思いました。上記と同じ結果が得られます (オブジェクト自体にデータがあることを再確認しました)。

私はこの時点で途方に暮れています。BeautifulSoup のようなものに移行することもできますが、それはさらに多くのコードを記述することを意味します (eulxml を使用すると、属性に入力する値への xpath を指定するだけで済みます)。jsonpickle に欠けているものはありますか? または、私が見るべき別のjsonパッケージがありますか? または、この方法を必要以上に難しくしている可能性があります.Pythonを使用してeXistDBにクエリを実行し、Angularを使用して構築されたフロントエンドアプリケーションに情報を送信する別の方法があります. 私は提案を受け入れます。

以下にコードのサンプルを含めます (おそらく 10 以上のオブジェクトを扱っているため、すべては含めません)。

eulxml を使用したサンプル オブジェクト コード: