問題タブ [object-serialization]

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 に答える
280 参照

java - Blackberry上のファイルにHastableまたはオブジェクトを書き込む方法

BlackberryがSerializableの実装をサポートしていないことを知りました。では、オブジェクト(またはハッシュテーブル)をファイルに書き込む方法はありますか?

ありがとう。

0 投票する
1 に答える
1248 参照

php - セッションでオブジェクトをシリアル化するときの不完全なPHPクラス

私はショッピングカート(カートモデル)に取り組んでいます。その保護されたプロパティの1つは、Productオブジェクトの配列を保持する「_items」です。それら(製品)はすべて、セッションにデータを取り込むためにDBに保存されます(ZF、Zend_Session_SaveHandler_DbTable()などを使用)。

コントローラで、ProductMapperを使用してDBからProduct objを取得し、それを「addItem()」に提供します。

getProductByName()新しく設定されたModel_Productオブジェクトを返します。


私は通常

Please ensure that the class definition "Model_Product" of the object you are trying to operate on was loaded _before_ ...

エラーメッセージ、セッションダンプは明らかに表示されます

['__PHP_Incomplete_Class_Name'] => 'Model_Product'


「シリアル化する前にクラスを宣言する」ことを知っています。私の問題はこれです:addItem()最初に注入された場合(最初のパラメータ)、でProductクラスを宣言するにはどうすればよいですか?新しい宣言(のようなnew Model_Product())は、のパラメータ(元のオブジェクト)を上書きしませんaddItem()か?カートモデルで再度宣言する必要がありますか?

Cannot redeclare class Model_Productその上、私が...カートでそれを再宣言すれば、私はきっと得るでしょう。

0 投票する
1 に答える
1422 参照

asp.net-mvc - MVC 3アプリケーションにフォームPOSTを実行し、逆シリアル化されたクラスを取得するにはどうすればよいですか?

私は次のフォームを持っています:

属性はknockoutjsですが、data-bindこれは重要ではありません。textareaには、シリアル化されたオブジェクトであるJSONが正しく含まれています。

では、MVC 3アプリケーションにフォームPOSTを実行して、逆シリアル化されたクラスを取得するにはどうすればよいですか?

0 投票する
11 に答える
163954 参照

php - PHP オブジェクトを JSON にシリアライズする

そこで、新しいJsonSerializable Interfaceに出くわしたとき、PHP オブジェクトを JSON にシリアライズする方法についてphp.netをさまよっていました。ただし、 PHP >= 5.4のみであり、5.3.x 環境で実行しています。

この種の機能は、 PHP < 5.4でどのように実現されていますか?

私はまだ JSON をあまり扱っていませんが、アプリケーションで API レイヤーをサポートしようとしており、データ オブジェクト (それ以外の場合はビューに送信される) を JSON にダンプするのは完璧です。

オブジェクトを直接シリアライズしようとすると、空の JSON 文字列が返されます。これはjson_encode()、オブジェクトをどうするかがわからないためです。オブジェクトを再帰的に配列に減らしてから、それをエンコードする必要がありますか?


echo json_encode($data)空のオブジェクトを生成します:

var_dump($data)ただし、期待どおりに機能します。


補遺

1)

だから、これはtoArray()私がMf_Dataクラスのために考案した関数です:

ただし、Mf_Dataオブジェクトには親 (を含む) オブジェクトへの参照も含まれているため、これは再帰で失敗します。参照を削除すると、魅力のように機能し_parentます。

2)

補足として、複雑なツリー ノード オブジェクトを変換する最終的な関数は次のとおりです。

3)

実装を少しきれいにして、もう一度フォローアップします。チェックにインターフェースを使用することは、 (ただし、クロスカットの継承/実装を行うinstanceof)よりもはるかにクリーンに見えます。method_exists()method_exists()

使い方unset()も少し面倒で、ロジックを別のメソッドにリファクタリングする必要があるようです。ただし、この実装ではプロパティ配列がコピーされるため (によりarray_diff_key)、考慮すべき点があります。

0 投票する
3 に答える
1109 参照

android - Rect などのオブジェクトをシリアル化していないシリアル化されたクラスを保存する

アクティビティが onDestroy() を呼び出すときにシリアライズされたオブジェクトを保存しようとしていますが、ObjectOutputStream を使用してオブジェクトを書き込もうとすると、java.io.NotSerializableExeption がスローされます。

手伝ってくれませんか。ありがとう

0 投票する
3 に答える
21232 参照

php - オブジェクトのシリアル化/非シリアル化はどのように機能しますか?

PHPのシリアル化/非シリアル化の概念について読んでいました。それらがfilesystem/dbにどのように保存されているのか疑問に思いました。バイナリ形式だと思います。しかし、クラス全体がどのように保存されているのでしょうか。データメンバーのデータを保存できることは理解しましたが、メソッドはどのように保存されますか?

つまり、PHPは、sayの関数内に記述されているコードをどのようにして知るのsomeFunc()でしょうか。

PHPは2行目で何をすべきかを知ることができますが、シリアル化されていないオブジェクトである5行目で何をすべきかをどのように知るのでしょうか。コードも保存されますか?

0 投票する
3 に答える
19236 参照

java - Java オブジェクトの直列化と継承

Bar が Foo を拡張して実装する Foo と Bar という 2 つのクラスがあるとします。Serializable

Foo は を実装していないことに注意してくださいSerializable。では、bar がシリアライズされるとどうなるでしょうか?

「デフォルト21」と出力されます。問題は、クラスがシリアル化されていないときにデフォルトのコンストラクターが呼び出されるのはなぜですか?

0 投票する
1 に答える
4000 参照

c# - comまたはExcelオブジェクトをバイナリ形式にシリアル化して、asp.netのメモリストリームに保存できるようにする方法

これがサンプルコードです...しかし、私はserializationExceptionを取得しています。

xlbookはオブジェクトであり、このオブジェクトをメモリストリームに保存したいと思います。

私が得ている例外は...

アセンブリ'Microsoft.Office.Interop.Excel、Version = 11.0.0.0、Culture = neutral、PublicKeyToken =71e9bce111e9429c'に'Microsoft.Office.Interop.Excel.WorkbookClass'と入力すると、シリアル化可能としてマークされません。

0 投票する
4 に答える
13232 参照

php - シリアル化されたオブジェクトを MySql データベースに保存する

シリアル化して MySql データベースに保存したい大きな php オブジェクトがあります。テーブルのエンコーディングはUTF-8で、シリアル化されたオブジェクトのエンコーディングを保持する列もUTF-8です。

問題は、オブジェクトがフランス語の文字を含むテキスト文字列を保持していることです。

例えば:

オブジェクトをシリアル化してから再度シリアル化を解除すると、文字列が維持され、正しい形式になります。

ただし、シリアル化されたオブジェクトを MySql データベースに保存し、再度取得してからシリアル化を解除すると、文字列は次のようになります。

オブジェクトをデータベースに保存すると、何か問題が発生します。

ノート:

  • オブジェクトは propel ORM を使用して保存されます。
  • 列タイプはtext.
  • 文字列が保存され、html ファイルから読み取られます。
0 投票する
2 に答える
195 参照

java - Java とオブジェクトのシリアル化

オブジェクトのシリアル化に関して私が見たすべての例には、すべてのフィールドコンストラクターと、すべてのフィールドのゲッターおよびセッターメソッドが含まれています。これは必需品ですか?Javaオブジェクトをシリアライズ可能にするために何をしなければなりませんか、シリアライズ可能なインターフェースでタグ付けし、すべての非一時的なフィールドがそれ自体でシリアライズ可能であることを保証する必要があります。