【问题标题】:reading the value of an array of json and putting it into set through java读取json数组的值并通过java将其放入set
【发布时间】:2019-10-08 11:37:31
【问题描述】:

我正在使用带有 java 11 的 Jackson 库,所以基本上我可以将下面的 JSON 读取为字符串格式

{

   "schemas":[
      "urn:params:core:2.0:User",
      "urn:params:core:3.0:User"
   ],
     },

}

下面是我必须从上面的 json 填充模式值的集合

private Set<String> setschemas = null;

现在我可以将上面的 json 读入一个名为 finaljson 的字符串,现在请告诉我如何从上面名为 finaljson 的 json 字符串中读取不同的模式值并将其设置为名为 setschemas 的集合

if (node.has("schemas")) {
    // *** here I want to read the differernt value of schemas and set it to a set
    // named setschemas
    // *****
}

【问题讨论】:

  • 你知道json的结构吗?如果是这样,您可以创建与您的 json 相对应的类,以便使用 jackson 自动反序列化它。

标签: java json jackson


【解决方案1】:

您可以创建以下表示 json 结构的类

class MyJsonObject {

    private AppIdentity appIdentity;
    private Set<String> schemas;
    private String userName;

}

class AppIdentity {
    private String clientId;
    private String username;
}

你可以使用 final MyJsonObject myJsonObject = new ObjectMapper().readValue(finaljson, MyJsonObject.class); 读取 json 到 JAVA 对象

所以它可以像myJsonObject.schemas.size() &gt; 0 这样的操作......

网上有很多例子

*请记住,此解决方案仅在 json 结构和字段名称在高级中已知时才有效

【讨论】:

    【解决方案2】:

    使用您的方法,这将是最简单的一种:

    if(node.has("schemas")) {
            JsonNode schemaNode = node.get("schemas");
            Set<String> schemaSet = objectMapper.convertValue(schemaNode, Set.class);
            System.out.println("schemaSet" + schemaSet);
    }   
    

    处理JSON的方法有很多种,这里描述一种

    1) 你可以通过在线JSON to POJO转换器的帮助创建一个如下的JSON结构类(注意:在IDE的帮助下添加Setters和Getters)

    class AppJson {
        private Set<AppIdentity> appIdentity;
        private Set<String> schemas;
        private String userName;
        private Manager ManagerObject;
        private String division;
        private String organization;
        private String costCenter;
        private String employeeNumber;
    }
    
    class AppIdentity {
        private String clientId;
        private String username;
    }
    
    class Manager {
        private String value;
        private String $ref;
        private String displayName;
        private String $Ref;
    }
    

    2) 用于对象转换。

        ObjectMapper objectMapper = new ObjectMapper();
        String jsonString = "{\"appIdentity\":[{\"clientId\":\"9a41763c642\",\"username\":\"XXX\"}],\"schemas\":[\"urn:params:core:2.0:User\",\"urn:params:core:3.0:User\"],\"userName\":\"ajklmnop_699100\",\"manager\":{\"value\":\"string\",\"$ref\":\"sdkoirk\",\"displayName\":\"string\",\"$Ref\":\"sdkweoirk\"},\"division\":\"string\",\"organization\":\"string\",\"costCenter\":\"string\",\"employeeNumber\":\"string\"}\n"
                + "";
        AppJson appJson = objectMapper.readValue(jsonString, AppJson.class);
        System.out.println("json " + appJson.getSchemas());
    

    在这里您将获得架构。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-14
      • 2012-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-05
      相关资源
      最近更新 更多