У меня есть этот файл json:
{
"gateway_name": "gateway1",
"fields": [
{"name":"Code", "value":""},
{"name":"PaymentId", "value":""},
{"name":"RefNo", "value":""}
]
}
Я пытаюсь проанализировать этот файл с помощью средства отображения объектов Jackson
и выполнить итерацию по массиву fields
. Чего я хочу добиться, так это того, что когда name
равно RefNo
, манипулируйте value
до 1112
, чтобы он стал:
{
"gateway_name": "gateway1",
"fields": [
{"name":"Code", "value":""},
{"name":"PaymentId", "value":""},
{"name":"RefNo", "value":"1112"}
]
}
Как проверить значение field
и установить для value
значение 1112
?
Что я пробовал до этого момента:
Resource resource = new ClassPathResource("gateway-fields.json"); //read from json file
JsonFactory jsonFactory = new JsonFactory();
ObjectMapper objectMapper = new ObjectMapper(jsonFactory);
JsonNode arrayNode = objectMapper.readTree(resource.getFile()).get("fields");
if (arrayNode.isArray()) {
for (JsonNode jsonNode : arrayNode) {
JsonNode nameFieldNode = jsonNode.get("name");
JsonNode valueFieldNode = jsonNode.get("value");
//Stcuked here
IF nameFieldNode is "RefNo"
THEN SET valueFieldNode to "1112"
}
}
Gateway geateway = objectMapper.readValue(json, Gateway.class); gateway.getFieldNamed("RefNo").setValue("1112");
. Разве это не намного яснее? - person JB Nizet   schedule 14.08.2018