java - 使用 Map 值处理 Map

标签 java json

对于下面的 JSON

{
    "employee": {
        "insurances": {
            "insurance1": "45.1",
            "insurance2": "505.5"
        }
    },
    "id":61
}

我使用下面的代码片段从每个字段检索值

Map<String, Object> insuranceDetails = (Map) ((Map) sourceAsMap.get("employee"))
    .get("insurances");

insuranceDetails.get("insurance1");
insuranceDetails.get("insurance2");

想知道是否有更好/有效的方法来实现这一目标?它必须在循环内运行,所以我担心性能。 “insurance1”和“insurance2”是固定字段。

最佳答案

创建一个实体类是一个更好的解决方案,它的属性是根据你的json格式的。

class Json {
    long id;
    Map<String, Map<String, Float>> employee;
}

甚至:

class Json {
    long id;
    Map<String, Insurrences> employee;
}

class Insurrences {
    Map<String, Float> insurrences;
}

class Converter {
    public static void main(String[] args) {
          String json = "{"employee":{"insurances”:{“insurance1”:”45.1","insurance2”:”505.5”}}, “id":61}";
          Gson gson = new Gson();
          Json jsonObj = gson.fromJson(json, Json.class);
          System.out.println(jsonObj.id);
    }
}

输出为:61

gson 库:https://github.com/google/gson

关于java - 使用 Map 值处理 Map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52203395/

相关文章:

java - 使用 Guice 注入(inject)带注释的泛型类

php - 远程 JSON 数据源的 JQuery 自动完成功能不起作用

json - Nodejs 从 http 请求 block 中读取 JSON 数据

jquery - JSON 解析器错误

json - 使用 Go 解析 .Net JSON 日期

java - 使用线程并行运行类的方法

java - "Dynamic"Java代码

java - 帮助编写您自己的 javax.swing.text.Document

java - 如何配置 Jackson ObjectMapper 将 Foo 类型的所有字段反序列化为 SubclassOfFoo 的实例?

java - Jackson objectMapping 没有获取 JSON 数据