【问题标题】:Creating map based on json given根据给定的json创建地图
【发布时间】:2019-01-21 10:36:58
【问题描述】:

JSON

{
 "type": {
   "type1": {
     "sub1": [
        "sub1A": {
        }
     ]
   }
 }
"type2": {
   "type1": {
     "sub1": [
        "sub1A": {
        }
     ]
   }
 }

}

我有这样的 Json,我不知道如何为此创建地图,比如

Map<String, Object> requestMap = new HashMap<>();
requestMap.get("type"); 

在里面再次创建包含子数据的地图。

【问题讨论】:

  • 使用一个 JSON 库来解析 JSON,它会给你一个 Map of Map (x5) 作为回报。 --- 好吧,除了它会失败,因为那不是有效的 JSON。如果您将 [] 替换为 {} 将是有效的

标签: java jakarta-ee


【解决方案1】:

我没有完全理解你的问题。但是,从您的陈述来看,如果您尝试将 json 数据提取到您的类中,并且该 JSON 数据具有递归映射,即一个对象在其主体下包含自己。然后,我认为您不需要 HashMap 将此 json 映射到您的类中。您可以将单个实体与自身类型的字段一起使用,例如员工-经理关系。例如,

class Type {
  private Type type;
  private String otherField;
  // constructors, setters, getters
}

现在,您可以使用递归函数从类型中读取值。

【讨论】:

    【解决方案2】:

    根据您分享的内容,您可以使用:

    Map <String, Map<String, Map<String, Set<Map<String, String>>>>>
    

    或者要获取有关使用 json 对象的更多详细信息,您可以查看:Query a JSONObject in java

    【讨论】:

    • Set?它只有 1 个类型参数。你的有 2. 编译错误!!! --- 而且显示的 JSON 是无效的,所以除了解析异常之外什么都不会。
    • 有两件事,要么这不是一个有效的 json,要么它只是一个他想要存储的对象,只是将它命名为 json。如果我们确定我们得到了一个 json,那么显然有你提到的错误,那么最好的方法就是使用 JSONObject (stleary.github.io/JSON-java/org/json/JSONObject.html)。但如果第二种情况是真的,那么我提到的(编辑)是正确的。
    猜你喜欢
    • 1970-01-01
    • 2015-12-09
    • 2020-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-13
    • 1970-01-01
    • 2020-08-11
    相关资源
    最近更新 更多