2013-12-23 124 views
0

我正在使用quick-Json序列化我的程序中的HashMap(String,String []),但我在解序列化对象时遇到了麻烦。我使用此代码来序列化地图quick-json反序列化投射问题

JsonGeneratorFactory generatorFactory = JsonGeneratorFactory.getInstance(); 
    JSONGenerator generator = generatorFactory.newJsonGenerator(); 
    String json = generator.generateJson(allCodes); 

其中所有代码都是HashMap(String,String [])。这种形式定义

[{"key1":["value1","value2"]}] 

下面是我用反序列化对象

JsonParserFactory parseFactory=JsonParserFactory.getInstance(); 
    JSONParser parser = parseFactory.newJsonParser(); 
    output = parser.parseJson(inputString); 

输出的形式为

{root=[{"key1":["value1","value2"]}]} 

我的目标是投上述作为一个HashMap的代码(String,String [])。增加的根参数使得这很难。有没有办法返回到所需的HashMap?

+0

你可以调用output.get(“root”)。get(0)? – Bill

+0

我可以调用output.get(“root”),但它只是返回一个对象,所以除非我输出输出,否则我不能再继续。 – eBehbahani

回答

1

尝试:

HashMap outputHashMap = (HashMap) (((ArrayList) ((HashMap) parser.parseJson(json)).get("root")).get(0)); 

有可能是一个更优雅的方式,但是这是我能想到的,现在是最好的。

+0

我想避免过度投射,但这种方式应该工作。我决定用(de)序列化使用base64的文件。 – eBehbahani

0

而不是parser.parseJson(inputString)使用parser.parse(inputString)。 这会给你你正在寻找的格式。

+0

我得到的唯一选择是parser.parseJson(...)。没有parser.parse(...) – eBehbahani