如何使用Gson将json转换为嵌套Map?

h6my8fg2  于 2022-11-06  发布在  其他
关注(0)|答案(1)|浏览(266)

我有一个POJO MyModel.java

public class MyModel {
  String displayName;
  String id;
  StepDetails stepDetails;
}

StepDetails.java中,我有:

public class StepDetails {
  V1 v1;
  V2 v2;
}

V1.javaV2.java中,两者相同,仅具有Map字段keyValuePairs

public class V1 {
  Map<String, String> keyValuePairs;
}

我的json字符串示例:

{
  "displayName": "My Name",
  "id": "id123",
  "stepDetails": {
    "v1": {
      "key1": "val1",
      "key2": "val2"
    },
    "v2": {
      "key1": "val1",
      "key2": "val2"
    }
  }
}

当我尝试使用Gson将json字符串转换为模型时,MyModel中的displayNameid字段填充得很好,但是v1v2对象中的Map为空。这就是我目前正在做的事情:

MyModel myModel = new Gson().fromJson(jsonString, MyModel.class);

我看了几个SO帖子,但它们似乎都建议使用某种形式的TypeToken,例如:

new Gson().fromJson(jsonString, new TypeToken<MyModel>(){}.getType());

我试过了,但Map字段仍然没有填充。

wvt8vs2t

wvt8vs2t1#

V1V2类型是不必要的,因为在JSON中,您需要的字典直接与关键字“v1”和“v2”相关联。因此,字段v1v2的类型应该是Map<String, String>

class MyModel {
    private String displayName;
    private String id;
    private StepDetails stepDetails;

    // getters...
}

class StepDetails {
    private Map<String, String> v1;
    private Map<String, String> v2;

    // getters...
}

相关问题