2017-11-02 9 views
0

2つの独立したデスクトップアプリケーション間でオブジェクトデータを共有しようとしています。通常、私はシリアル化ライブラリを使用して、あるアプリケーションでオブジェクトをシリアル化し、他のアプリケーションでデシリアライズして、オブジェクトにデータをキャストします。クロスプラットフォームJSONシリアル化

問題:

  • 私はC#でオブジェクトをシリアライズしていますが
  • は、私がここで

    が交流である

例には、Javaでそれらをデシリアライズしたい私が欲しい#class(Foo) Javaでialize:

class Foo 
{ 
    public List<Bar> BarList {get;set;} 
    public string Name { get; set; } 
} 
class Bar 
{ 
    public string X { get; set; } 
    public int Y { get; set; } 
} 

注:[ { 「X:私は

JSON例えばFooのオブジェクト

{ "バーリスト" をシリアル化する​​を使用してい":" hi "、 " Y ":5 }、 { " X ":" hello "、 " Y 「:10 } ]、 "名前": "foo" という }

は、このオブジェクトを消費するJava

のは、私はJavaで非常に類似したのFooクラスを持っていると仮定しましょう。プロパティの代わりに、publicのgetter/setterメソッドを持つ標準のprivateメンバーがあります。

は今、私は単にような何か行うことができます:

class Foo 
{ 
    private ArrayList<Bar> barList; 
    private string name; 

    public Foo(string pathToJsonFile) 
    { 
     // Method/Code to manually grab the needed JSON and call setters 
    } 

    // Setters/Getters 
} 

をこのソリューションは動作しますが、私はむしろ私のJavaプロジェクト内のすべての単一のオブジェクトに、このコンストラクタを持つ避けるだろう。さらに、オブジェクトが深く結合されている場合、このメソッドは膨大になります(このオブジェクトを逆シリアル化しますが、逆シリアル化なども必要なオブジェクトが含まれています)。

私の質問:

は、このプロセスを簡単に作ることができるJavaの標準ライブラリにある任意のデシリアライズ方法は、ありますか?

アルゴリズムのアイディアも高く評価されます(私は小さなフレームワークを作成しても構いません)。

完全にオープンソースであり、.jarの依存関係がない場合、サードパーティのソリューションは大丈夫です

答えて

0

前回私が確認したところ、Java SEにはそれがありませんでした。 Java EEでは、少なくともjava.ws.rsというパッケージにAPIがあります。あなたはAPIを使用することができ、実装に関してはほとんど独立しています。

独自のフレームワークを作成したい場合は、楽しい時間を過ごしてください。 JSONは考えているよりもはるかに複雑です。その部分集合の大きさに応じて、この作業はかなり時間がかかることがあります。

+0

私は文字どおりのオブジェクトで動作するソリューションを探しているわけではありません。 Google GSONは実際にはこれでかなり良いですが(.jarの依存関係があります)私が十分に作業を壊してしまえば、20クラス以下の自分の非直列化フレームワークをそれほど悪くしてはいけません。 – Clay07g

+0

あなたが必要とするのは、あなたが現在使っているサブセットであれば大したことではないと思います。あなたはなぜサードパーティのライブラリを使うことができないのですか? – Vlasec

+0

コードはリモートからソースファイルから実行されます。 .jarsからコードを実行することはできません。私はGSONを行うことができるかもしれませんが、私が試した最後に.jarファイルへの参照がありました。今は違うかもしれません(または修正可能)。 – Clay07g

1

JSON-B(JSR 367)を見ましたか?これはまだ標準ライブラリには含まれていませんが、今年の6月には最終的な仕様was approvedです。オープンソースのYassonと呼ばれる正式なリファレンス実装があります。それはないあなたが探しているものであれば

、JSONはJavaで結合取り扱うサードパーティのオープンソースライブラリのすべての種類、わずか数名になどJacksonGsonGensonFlexJsonjson-simpleがあります。それらのうち、最初の2つが最も人気があるようです。より多くの図書館がjson.orgに掲載されています。

+0

この実装がソースにアクセスできない(.jarリファレンスのオブジェクトのような)オブジェクトで動作する場合は、どうぞお分かりですか? – Clay07g

+0

わかりません。あなたは仕様を見なければならないでしょう。私はGsonがそれをサポートしていると思います。 –