JsonObject添加属性 - 地图

har*_*rsh 2 java json gson

我有一个名为测试与类String id字段和HashMap mapMap<String, String[]>,Map<String, ArrayList<String>>Map<String, HashMap>(这里第二个HashMap<String, Integer>一个)我有下面的代码.

JsonObject jsonObject = new JsonObject();

jsonObject.addProperty("id", test.getId);
Run Code Online (Sandbox Code Playgroud)

像这样,我想将Map添加到此.添加喜欢jsonObject.addProperty("map", String.valueOf(test.getMap()));不能正常工作,因为它添加"(逗号)开头和结尾.有人可以告诉我这是正确的方法吗?

Sot*_*lis 5

JsonObjectadd添加基元的方法,但只有一种add方法可以添加复杂类型.这种方法需要一个JsonElement你必须创建的东西.

JsonObject jsonObject = new JsonObject();
Gson gson = new Gson();
JsonElement jsonElement = gson.toJsonTree(test.getMap());
jsonObject.add("map", jsonElement);
Run Code Online (Sandbox Code Playgroud)

我不知道你为什么这么做.在上一个问题中,我向您展示了如何从Test类中生成完整的JSON .

您可以使用

gson.toJsonTree(test);
Run Code Online (Sandbox Code Playgroud)

将JSON作为一个JsonElement,你可以强制转换为JsonObject.