2011-11-15 33 views
6

我想使用XStream将java哈希转换为json哈希。我觉得这应该比看起来更容易。我正在寻找的是一个方法,使:Java XStream with HashMap

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

成为

{'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); 

成为

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

我觉得自己像一个Java哈希转换成JSON哈希应该是直线前进。我错过了什么吗?

+1

可能是你可以选择其他的lib,请参阅http://json-lib.sourceforge.net/apidocs/jdk15/net/sf/json/JSONObject.html。 – Jason

回答

0

转换为jSon时,我遇到了类似的问题。我解决这个问题的方法是让字符串在放入文件之前已经格式化为JSon(在我的情况下是数据库)。到目前为止,我提出的最有效的过程就是在我的类中创建一个toJson函数,就像toString一样工作。

例子:

对象的数据输出字符串成JSON格式

public JsonObject toJson() 
    { 

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

那么对你来说,在填充地图实现类似的过程转换。

1

问题是XStream首先被设计用来将Java对象编组和解组成XML,而JSON只是一种事后考虑,它绝对是最不优雅的支持。

技术问题是由于XStream必须同时支持XML和JSON格式,所以JSON映射表示会受到影响,因为在XML中没有本地方式来表示类似于映射的结构。

0

你可以尝试使用json.org的java的“官方”json库。

呼叫:

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