2011-07-06 11 views
2

問題:地図のシリアライズ

私はJAX-RSアプリケーションでJAX-BでのHashMapの簡単な直列化をやろうとしていると、余分な出力に実行していますよ私は避けたいのです。 HashMapのデフォルトのシリアライゼーションには、(私のアプリケーションにとって)役に立たないXML名前空間とプレフィックスが含まれています。

私は地図のために取得しています出力は、次のとおりです。

<params> 
    <entry> 
    <key xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">keyName</key> 
    <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">123</value> 
    </entry> 
    ... 
</params> 

の代わり:

<params> 
    <entry> 
    <key>keyName</key> 
    <value>123</value> 
    </entry> 
    ... 
</params> 

クラスは基本的にそのようにレイアウトされています

@XmlRootElement(name="example") 
public ExampleClass 
{ 
    private params HashMap<String,Object> = new HashMap<String,Object>(); 

    public ExampleClass() { } 

    @XmlElementWrapper(name="params", required=true) 
    public Map getParameters() 
    { 
    return params; 
    } 
} 

何ができますXML出力を簡素化するために行う必要がありますか?

ライブラリリファレンス:

  • JAX-RS doesnのマップので(RESTEasyの2.0に含まれる)
  • JAX-B

答えて

4

(RESTEasyの2.0は、このバージョンに結婚していません)シリアライザはジェネリックを使用しないため、各要素値のデータ型が書き込まれます。

public Map<String,String> getParameters() 

をごMap<String,Object>を使用する場合でも、シリアライザは価値要素の対応する型を記述することがあります。

を使用してみてください。

+0

それをしました。ありがとうございました。 –