2017-06-24 23 views
-3

私は最近、JSONをシリアル化する必要があります。 Javaでは、serializableを実装していないので、Javaとしてシリアライズできません。これをstringに変換してシリアル化し、文字列として読み込んでJSONに変換します。JavaのJSONがシリアル化を実装しない理由

しかし、直列化のために文字列に変換し、逆シリアル化した後に文字列をJSONに変換するオーバーヘッドがあります。

私はこれを回避すると考えている解決策は、シリアル化&非常に単純化されています。私たちはorg.json。*のすべてのクラスでコードを書き直すことができます。*シリアル化を実装するには

そして私の質問はJSONがシリアル化を実装しない理由です。 これを避ける特別な理由がありますか

+5

JSONの重要なポイントは、JSON構文を使用してテキストとして書式設定された構造化データを、どのプログラミング言語でも書込み可能および読取り可能に交換することです。ネイティブJavaのシリアライゼーションのようにバイナリデータを交換しないでください。これはJavaコードでしか読み取ることができません。あなたのアイデアは、テキストファイルを送信するのではなく、テキストファイルを印刷し、写真を撮って、JPEGファイルを送信するのと基本的に同じです。 –

+1

JSONは既にXMLのようなシリアライゼーション形式であり、あなたの質問は[XY問題]のように聞こえます(http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem )。あなたが解決しようとしている問題が何であれ、JSONをシリアライズ可能にすることは、あなたが望む解決策ではない可能性があります。 –

+1

@aravinthシリアライゼーションが必要な理由はなぜJSONを使うのですか?なぜ元のオブジェクトをシリアル化しないのですか?それは意味をなさない。 – EJP

答えて

1

Serializableを実装するオブジェクトは、通常、ネイティブJavaシリアル化アルゴリズム(here)を使用してシリアル化されます。

JSONはどの言語でも動作しますが、ネイティブJavaのシリアル化はJavaでのみ機能します(それでもかなり脆い)。したがって、この機会にSerializableを実装することは意味をなさない。

+0

SerializableはJSONとは関係ありませんが、私が思うどんなJSONも害はありません。したがって、2つのJavaプログラム間の転送がよりうまくいく場合は、 – aravinth

+1

'SerializableはJSONと何も関係がありません。 - それはまさにポイントであり、なぜ使用されないのでしょうか。 –

-1

なぜシリアル化が必要ですか?

シリアライゼーションは、オブジェクトのバイトストリームへの変換を意味し、その目的はオブジェクトの状態を維持することです。単語「状態」とは、変数の値または他のオブジェクトへの参照を意味します。シリアライズ後に取得されたバイトストリームは、データベースに格納することも、リモートクライアント/サーバーとの通信にネットワーク経由で使用することもできます。シリアライズ

シリアライゼーションの

の使用は、それが非直列化することができるように使用され、将来的に(私たちは、オブジェクトの保存された状態を得ることができます)。デシリアライズするときは、変換したいオブジェクトを指定します。

JSONはJavaScript Object Notationを意味します。これはJavaScriptオブジェクトの表記であり、ではなくのJavaオブジェクトです。それは表記であり、実際のオブジェクトではありません。

Javaはjavascriptオブジェクトの読み方を知らないため、シリアル化できません& JSONを逆シリアル化します。したがって、あなたはjsonをStringに変換します。 javaは、&を直列化する方法を知っています。

+0

'JavaはJavaScriptオブジェクトの読み方を知らないため、JSONにシリアライズしてデシリアライズすることはできません。つまり、 'org.json'パッケージはそれを正確に行います。あなたはこの質問が実際に何をしているのか完全に忘れてしまった。 – EJP

関連する問題