使用GSON将Hashmap转换为JSON

use*_*706 9 java json gson

我有一个HashMap<String, String>,其中值字符串可以是long或double.例如,123.000可被存储为123(存储为长),和123.45123.45(双).

取这两个hashmap值:

("一","123"); ("两个","123.45")

当我将上面的地图转换为JSON字符串时,JSON值不应该有双引号,比如

预期:{"one":123,"two":123.45}

实际:{"one":"123","two":"123.45"}

这是我的代码如下:

String jsonString = new Gson().toJson(map)
Run Code Online (Sandbox Code Playgroud)

我更喜欢使用GSON的解决方案,但也欢迎使用其他库或库.

bco*_*rso 7

对于Gson,您将获得以下转换:

Map<String, Double> -> {"one": 123, "two":123.45}
Map<String, Number> -> {"one": 123, "two":123.45}
Map<String, String> -> {"one": "123", "two": "123.45"}
Run Code Online (Sandbox Code Playgroud)

基本上,没有办法让Gson自动将你的字符串转换为数值.如果您希望它们显示为数字(即没有引号),则需要在地图中存储相应的数据类型,Double或者Number.

此外,Json只有有限数量的基本类型,它存储字符串或数字.一个数值不区分Integer,Long,Double,等.所以我不知道为什么你想区分它们.一旦它被存储为Json,它们都被认为是相同的数字类型.