чтение значения массива JSON и положить его в набор через Java - PullRequest
0 голосов
/ 08 октября 2019

Я использую библиотеку Джексона с java 11, поэтому в основном я могу прочитать приведенный ниже JSON в строковом формате

{

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

}

здесь ниже - набор, в котором я должен заполнить значения схем извыше json

private Set<String> setschemas = null;

прямо сейчас я могу прочитать вышеупомянутый json в строку с именем finaljson, теперь, пожалуйста, посоветуйте, как мне прочитать другое значение схемы из вышеупомянутой строки json с именем finaljson и установить ее для установкиименованные сетчемы

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

Ответы [ 2 ]

0 голосов
/ 08 октября 2019

При вашем подходе это будет проще всего:

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следующим образом с помощью онлайн конвертера JSON в POJO (Note :: Add Setters and Getters with the IDE)

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());

Здесь выполучит схемы.

0 голосов
/ 08 октября 2019

вы можете создать следующие классы, которые представляют структуру 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() > 0 и такие ...

есть много примеров в интернете

* имейте в виду, это решение работает только тогда, когда структура json и имя поля известны в продвинутом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...