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の依存関係がない場合、サードパーティのソリューションは大丈夫です。
私は文字どおりのオブジェクトで動作するソリューションを探しているわけではありません。 Google GSONは実際にはこれでかなり良いですが(.jarの依存関係があります)私が十分に作業を壊してしまえば、20クラス以下の自分の非直列化フレームワークをそれほど悪くしてはいけません。 – Clay07g
あなたが必要とするのは、あなたが現在使っているサブセットであれば大したことではないと思います。あなたはなぜサードパーティのライブラリを使うことができないのですか? – Vlasec
コードはリモートからソースファイルから実行されます。 .jarsからコードを実行することはできません。私はGSONを行うことができるかもしれませんが、私が試した最後に.jarファイルへの参照がありました。今は違うかもしれません(または修正可能)。 – Clay07g