0

flexjson.JSONDeserializer と flexjson.JSONSerializer を使用している Java コードがいくつかあります。(簡単に言えば、JSONDeserializer は JSON の文字列からプロパティ値のペアを使用してクラス インスタンスを作成し、JSONSerializer はクラス インスタンスを取得して JSON の文字列を作成します。)

そして今、私は XML にも同様のものを使用する必要があります。最も一致するものは何ですか?また、似ているがパフォーマンスが優れているものはありますか?

簡単な例

class X {
    private Integer a;
    public void setA(Integer a);
    public Integer getA(); 
}

with json equal to {"a":1} I have the following
new JSONDeserializer<X>().use(null, X.class).deserialize(json);

with json equal to [{"a":1},{"a":2}]
new JSONDeserializer<List<X>>().use(null, ArrayList.class).use("values", X.class).deserialize(json);
4

2 に答える 2

0

ここでXStreamとJAXBの比較を編集 します。まだそれらを再度比較する必要があります。編集終了

Xのコレクションも扱っているので、XStreamはJAXBオプションよりも簡単なようです。

シリアル化のコードは単純です

return new XStream().toXML(collection);

Mavenの依存関係は

<dependency>
    <groupId>com.thoughtworks.xstream</groupId>
    <artifactId>xstream</artifactId>
    <version>1.4.3</version>
</dependency>
<dependency>
    <groupId>xmlpull</groupId>
    <artifactId>xmlpull</artifactId>
    <version>1.1.3.1</version>
</dependency>

そしてあなたのJavaファイルに追加します

import com.thoughtworks.xstream.XStream;
于 2012-12-06T23:29:58.107 に答える
0

Java オブジェクトの XML との間の「愚かな」シリアライズ/デシリアライズを行うには、 javax.xml.bind.JAXBクラスの静的メソッドを使用するのが最善の方法です。marshal()メソッドとメソッドは、unmarshal()flexjson を利用しているものと同様の機能を提供する必要があります。しかし、私はパフォーマンスについて話すことはできません。

于 2012-12-06T21:46:13.453 に答える