Вот json
Как обновить элементы на карте, содержащей JsonNode в java?
{
"UserInfoService": {
"state": "active",
"message": [
"hello",
"world"
]
},
"UserProfileService": {
"state": "inactive",
"message": "[foo,bar]"
}
}
У меня есть карта, которая хранит это jsonNode основано на версии
например: {"v1": [email protected], "v2":[email protected]}
Вот мой метод:
public class ModifyMap {
private Map<String,JsonNode> map = new HashMap<>();
private void updateNode(Foobar foo,String version, List<String> messages, String mainKey){
JsonNode rootNode = featureStatusNodes.get(version);
if (featureNode==null){
rootNode=mapper.createObjectNode();
}
JsonNode stateNode = mapper.convertValue(new Status(foo.getState()), JsonNode.class);
JsonNode messageNode = mapper.convertValue(messages, JsonNode.class);
((ObjectNode) rootNode).set("state",stateNode);
((ObjectNode) rootNode).set("message",messageNode);
rootNode.put(version, featureNode);
}
}
public class Status {
String state;
//getters and setters
}
public class FooBar {
Status status;
//getters and setters
}
Это то, что я иметь.
но как бы установить mainKey
, который передается в качестве узла верхнего уровня. В приведенном выше примере mainKey
будет userInfoService
.
Факторы, которые необходимо учитывать являются , если mainKey
узел присутствует, а затем обновить его переданных значений
, если его нет, то создать и обновить его.
Обратите внимание, что в этом примере представлены два mainKeys
: userInfoService
, userProfileService
.
Существует top-level map
, который поддерживает versions
до jsonNode
картирование.
В приведенном выше случае, если для данной версии, если jsonNode имеет значение null, создайте его и обновите.
, если для данной версии, jsonNode (например userInfoService
) присутствует, но userProfileService
нет, а затем обновить корень, включив в него userProfileService
.
Если обновление необходимо только для userInfoService
, которое уже присутствует, то обновите его соответствующим образом.