1

JSON-Lib プロジェクトを使用すると、コマンドで作成できます

JSONObject jObject = new JSONObject();
jObject.accumulate("articles", list);
String json = jObject.toString();

次の出力:

{
    "articles": [
        {
            "amount": "50",
            "id": "1",
            "pct": "50,00",
            "price": "162,37",
            "startamount": "100",
            "stockvalue": "8118,45"
        },
        {
            "amount": "20",
            "id": "2",
            "pct": "20,00",
            "price": "164,83",
            "startamount": "100",
            "stockvalue": "3296,60"
        },
        {
            "amount": "20",
            "id": "3",
            "pct": "20,00",
            "price": "170,40",
            "startamount": "100",
            "stockvalue": "3408,00"
        },...
]
}

その間、私は Gson プロジェクトを使用し、それに関連付けられています。しかし、次のコード:

Gson gson = new Gson();
String json = gson.toJson(list);

この出力が得られます:

[
    {
        "id": "1",
        "amount": "50",
        "startamount": "100",
        "pct": "50,00",
        "price": "162,37",
        "stockvalue": "8118,45"
    },
    {
        "id": "2",
        "amount": "20",
        "startamount": "100",
        "pct": "20,00",
        "price": "164,83",
        "stockvalue": "3296,60"
    },...]

リスト内の要素は、pojo 記事のオブジェクトです

public class Article implements IsSerializable {
    private String id;
        private String amount;
        private String startamount;
        private String pct;
        private String price;
        private String stockvalue;

        public Article(){

        }

        //Setter & Getter
}

Gson を使用して、JSON-Lib が作成するような JSON 文字列を作成するにはどうすればよいですか (JSONObjects を含む JSONArray を使用した JSONObject)。将来、JSON 文字列は、より多くの配列 (記事ではなく、その他のもの) で拡張される予定です/拡張する必要があります。

この生成された JSON 文字列を HttpServlet から取得します。Gson JSON 文字列を逆シリアル化して ArrayList に戻すことは理にかなっていますか、それとも GWT JavaScript オーバーレイ タイプを使用する必要がありますか?

ありがとう、BR、mybecks

4

2 に答える 2

2

これは、Gson にオブジェクトのリストを渡すために発生します。したがって、最初の json スニペットと同じ出力が必要な場合は、記事のリストを保持するオブジェクトを定義する必要があります。例:

public class ArticlesResult {
   private List<Article> articles;


   ...//the rest of the code, like getters and setters
}

JsArray から ArrayList への変換について。それは異なりますが、ほとんどの場合、オーバーレイ タイプを使用する方が優れています。オーバーレイ タイプは作成が高速で、生成された JS コードのフットプリントが小さいためです。ただし、これはプロダクション モードにのみ当てはまります。devmode では、overlay 型は低速であるため、overlay 型にすばやくアクセスすると、そこで多くの時間を無駄にします。

于 2012-02-08T09:57:46.150 に答える
1

Gsonユーザーガイドを引用するには:

Gson は、Java オブジェクトを JSON 表現に変換するために使用できる Java ライブラリです。

これは、JSON にシリアル化する Java オブジェクトの JSON 文字列で見たい完全な構造を提供する必要があることを意味します。

あなたの場合、プロパティ「記事」を持つBeanで記事のリストをラップする必要があります。

動的構造を構築する必要がある場合、Gson は最適なツールではない可能性があります。Gson を JAXB などの XML バインディング ツールと比較できます。JAXB で使用される Bean 構造は、実行時に変更されることを意図していません。

于 2012-02-08T09:51:53.967 に答える