2011-11-15 9 views
6

Javaハッシュをjsonハッシュに変換するためにXStreamを使用したいと思います。私はこれがより簡単になるように感じます。私が探しているようにする方法である:Java XStream with HashMap

Map<String, String> map = new HashMap<String, String>(); 
map.put("first", "value1"); 
map.put("second", "value2"); 

は、私は一連の配列に変換している

{'first' : 'value1', 'second' : 'value2' } 

閉じなります。私はJSONハッシュにJavaのハッシュを変換するように感じる

[["first", "value1"], ["second", "value2"]] 

なり

XStream xstream = new XStream(new JettisonMappedXmlDriver() { 
    public HierarchicalStreamWriter createWriter(Writer writer) { 
     return new JsonWriter(writer, JsonWriter.DROP_ROOT_MODE); 
    } 
}); 

xstream.toXML(map); 

まっすぐでなければなりません。何か不足していますか?

+1

あなたはhttp://json-lib.sourceforge.net/apidocs/jdk15/net/sf/json/JSONObject.htmlを参照して、別のlibを選択することができますように。 – Jason

答えて

0

jSonに変換するときに同様の問題が発生しました。この問題に対する私の解決策は、ファイルにドロップする前に(私の場合はデータベース)、JSonにフォーマットされた文字列を持つことでした。今まで私が考えてきた最も効率的なプロセスはtoStringのように動作するようにクラス内でtoJson関数を作成することでした。

例:

マップを移入しながら、同様のプロセスを実装する、あなたのためにそう

public JsonObject toJson() 
    { 

     JsonObject temp = new JsonObject(); 
     temp.addProperty(tagName,floatData); 
     return temp; 
    } 

JSON形式にオブジェクトデータ出力文字列に変換します。

1

XStreamはJavaオブジェクトをXMLに整列化および非整列化するように設計されていますが、JSONはちょっとしたことであり、最も洗練されたサポートはほとんどありません。

XStreamがXML形式とJSON形式の両方をサポートしなければならないという技術的な問題点は、XMLのマップのような構造を表現するネイティブな方法がないため、JSON形式の表現が苦労するということです。

0

json.orgからjava用の "公式" json libを使用できます。

呼び出し:

JSONObject jsobj = new JSONObject(map); 
String strJson = jsobj.toString();