Customer
、などのモデル クラスがProduct
プロジェクトにあり、いくつかのフィールドとその setter-getter メソッドがあります。これらのクラスのオブジェクトを、Socketsを介してクライアントとサーバーとの間で JSONObject として交換する必要があります。
JSONObject
オブジェクトのフィールドがキーになり、そのモデル クラス オブジェクトの値がこの JSONObject の値になるように、モデル クラスのオブジェクトから直接作成できる方法はありますか。
例:
Customer c = new Customer();
c.setName("Foo Bar");
c.setCity("Atlantis");
.....
/* More such setters and corresponding getters when I need the values */
.....
そして、JSON オブジェクトを次のように作成します。
JSONObject jsonc = new JSONObject(c); //I'll use this only once I'm done setting all values.
これは私に次のようなものを与えます:
{"name":"Foo Bar","city":"Atlantis"...}
一部のモデル クラスでは、特定のプロパティ自体が他のモデル クラスのオブジェクトであることに注意してください。そのような:
Product p = new Product();
p.setName("FooBar Cookies");
p.setProductType("Food");
c.setBoughtProduct(p);
上記のような場合、予想どおり、生成される JSON オブジェクトは次のようになります。
{"name":"Foo Bar","city":"Atlantis","bought":{"productname":"FooBar Cookies","producttype":"food"}}
各モデルクラスで次のようなものを作成し、JSON に適した文字列を作成して操作できることはわかっtoJSONString()
ていますが、Java で RESTful サービスを作成した以前の経験 (これはこの質問の文脈から完全に外れています) では、返すことができました。サービスメソッドからJSON文字列を利用し@Produces(MediaType.APPLICATION_JSON)
、モデルクラスのオブジェクトを返すメソッドを持っています。そのため、クライアント エンドで使用できる JSON 文字列が生成されました。
現在のシナリオで同様の動作が可能かどうか疑問に思っていました。