Трансформация Jolt с 2 уровнями гнездования и сглаживания ееJAVA

Программисты JAVA общаются здесь
Anonymous
Трансформация Jolt с 2 уровнями гнездования и сглаживания ее

Сообщение Anonymous »

Я пытаюсь преобразовать следующий вход в вывод ниже, используя Java, но не могу получить внутренние вложенные атрибуты вообще. Итак, ниже, у нас есть дома и столовые приборы, я хочу, чтобы этот раздел соответствовал правилам и получил его атрибуты.

Код: Выделить всё

{
"product_class": "Home",
"product_subclass": "Cutlery",
"rules": {
"Home": {
"Cutlery": {
"is_sharp": true,
"is_prohibited_ca": false,
"requires_age_verification": false,
"compliance_policy_id": "CP-1"
},
"Rug": {
"is_sharp": false,
"is_prohibited_ca": true,
"requires_age_verification": true,
"compliance_policy_id": "CP-4"
}
},
"Lighter": {
"Default": {
"is_sharp": false,
"is_hazmat_ground": true,
"is_hazmat_air": true,
"compliance_policy_id": "CP-210"
}
}
}
}
< /code>
И я попробовал кучу спецификаций Jolt, но не добивался успеха, я просто не получаю никакой ценности в атрибутах, но пустым. Последнее-следующее:
spec используется: < /p>
[
{
"operation": "default",
"spec": {
"rules": "=@(rules)"
}
},
{
"operation": "shift",
"spec": {
"rules": {
"@(1,product_class)": {
"@(2,product_subclass)": {
"*": "attributes"
}
}
},
"product_class": "product_class",
"product_subclass": "product_subclass"
}
}
]
< /code>
ожидаемый выход < /p>
{
"attributes" : {
"is_sharp" : true,
"is_prohibited_ca" : false,
"requires_age_verification" : false,
"compliance_policy_id" : "CP-1"
},
"product_class" : "Home",
"product_subclass" : "Cutlery"
}

< /code>
Фактический вывод: < /p>
{
"attributes" : null,
"product_class" : "Home",
"product_subclass" : "Cutlery"
}
< /code>
Может ли кто -нибудь, пожалуйста, руководствуйте это и предоставьте ответ. Я даже попробовал GPT, и он начал галлюцинацию без правильного ответа! Итак, ищу руководство некоторую помощь здесь .. < /p>
Последующее наблюдение
Спасибо @barbaros Ozhen за предоставление спецификации Jolt.public String transform(String inputJson) throws IOException {
// Parse the input JSON string into a Java Map
Map inputMap = objectMapper.readValue(inputJson, new TypeReference() {});

// The JOLT transform method can take a "context" map, which allows the spec
// to reference external data. We'll provide our rules here.
Map context = Map.of("rules", this.rules);

// Perform the transformation
Object transformedOutput = chainr.transform(inputMap, context);

// Convert the final Java Object back to a pretty-printed JSON string
return objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(transformedOutput);
}

...
// Call to above method
String finalOutput = transformer.transform("{\"product_class\": \"Home\", \"product_subclass\": \"Cutlery\"}";);
Как мне изменить спецификацию Jolt здесь, когда ввод отделен от файла правил?


Подробнее здесь: https://stackoverflow.com/questions/797 ... ttening-it

Вернуться в «JAVA»