1

多くのサイトを検索しましたが、問題の解決策が見つかりませんでした。基本的に私の要件は少しトリッキーで、私自身が不可能だと感じることがあります。誰でも私を助けることができますか?

私の要件は、インターフェイスから継承される 3 つのクラスがあることです。次の構造を持つ JSON 配列を作成したいと思います。

interface i {
}

class A implements i {
    field l;  
    field 2;
}

まず、私の問題を解決することに関心をお寄せいただきありがとうございます。質問で言及したすべてのオブジェクトは、データベース永続オブジェクトです。連絡先オブジェクト、通信オブジェクト、およびアドレス オブジェクトがあり、すべて db 永続オブジェクトです。単一の連絡先には、複数の通信と複数のアドレスがあります。そのため、連絡先はテーブルに保持され、連絡先の一意の識別子を参照して、2 つの異なるテーブルに連絡先とアドレスが保持されます。

連絡表:

id ファーストネーム ラストネーム

3 xyz abc

通信テーブル:

id contactID 番号

1 3 999999999

アドレス テーブル:

id contactid 場所 1 3 インド

データベースに永続化した後、リクエストでサーバーに送信するjson配列を作成したいと思います。

final Collection<Syncable> collection = new ArrayList<Syncable>();
        collection.add(contact);
        collection.add(comm);
        collection.add(address);

        result =  HttpRestUtil.post(url,*** new Gson().toJson(collection)***,JSON,header );

Gson().toJson(collection) は、サーバー側で送信したい json を文字列で返します。文字列は次のようになります

[{"firstname":"xyz","lastname":"abc"},         //contact          
 {"number":"99999999"},                        //communication
 {"place":"india"}                             //address
]

しかし、私のサーバーは、フォーマットのjsonを取る実装されています

 [ {"firstname":"xyz",
 "lastname":"abc",
 {"number":"999999999"}
 {"place":"india"}
}]

サーバーはjson全体が連絡先、通信、アドレスのオブジェクトに逆シリアル化されるようにコーディングされています

今回の質問ではっきりしているといいのですが、もう一度、どうもありがとう

class B implements i {
    field 3;
    field 4;
}

class C implements i {
    field 5;
    field 6; 
}

今、次の形式の JSON 配列が必要です。この JSON はタイプ A です

[
    "field1": "value",
    "field2": "value",
    "objectB": "{ 'field3':'value','field4':'value'}",
    "objectC": "{ 'field5':'value','field6':'value'}"
]

私の要件はBで、CクラスはAクラスのフィールドでなければなりません。

私に解決策を与えることができる1つの方法は、BおよびCクラスをAの内部クラスにすることですが、私のオブジェクト構造はそれを許可しません。これは非常に高く評価されています。

前もって感謝します

4

2 に答える 2

2

私はいくつかの質問/コメントがあります:

  • JSONがAクラスを表すことを意図している場合、それは配列ではなくオブジェクトである必要があります。角かっこを中かっこに切り替えます。

  • BとCのインスタンスがAインスタンスのフィールドに格納されている場合は、それを反映するようにクラスモデルを更新する必要があります。現在、これらは3つの異なるクラスにすぎません。投稿されたJSONに基づいて、すべてのフィールドは文字列です。クラス宣言のフィールドに型情報を追加すると便利です。

  • JSONの生成に使用しているコードを投稿しても問題はありません。

于 2012-05-17T13:47:10.300 に答える
0

i have not found any solution to my above problem, to get a solution i am forced to change my object structure now i got the json format which i required.

I have changed my contact object to contains the communication and address as fields

public class Contact
{
      String firstName;
      String lastName;
      Communication comm[];
      Address address[];
}

communication and Address are two different classes

after setting the values of Contact object

 new Gson().toJson(contact);

gives me the json string i required

reference:

http://en.wikipedia.org/wiki/GSON

于 2012-05-21T11:42:59.587 に答える