防止Gson将List的JSON字符串反序列化为实际的ArrayList

时间:2014-10-01 23:14:35

标签: java gson deserialization json-deserialization

这是我的代码

Gson gson = new Gson();
HashMap<String, String> map = new HashMap<>();
map = gson.fromJson(new FileReader(inputFile), map.getClass());

inputFile的内容是

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

当我在Eclipse中调试期间检查map.get("key2")的值时,该值实际为(java.util.ArrayList<E>) [value1]

如何让Gson将内容反序列化为

{key1="[value1]", key2=value2}

由于

1 个答案:

答案 0 :(得分:1)

我觉得你看到

HashMap#toString()输出了
{key1=["value1"], key2=value2}

并且认为

["value1"] 

是某种类型的List,其String值为"value1"

不是。您的String作为String字面值将表示为"[\"value1\"]"。它的值是["value1"]。这就是显示的内容。

您的JSON键值条目均为string-string,并且将按此转换。

"key1": "[\"value1\"]",
//      ^ indicates a JSON string