Вот мой код ::
@Path("/api")
public class TransformFunction {
/**
* Transform the incoming JSON with JSLT and return the result.
*/
@POST
@Path("/post-json")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public String invoke(String json) {
try {
// this must be:
// {"json" : ..., "jslt" : jslt}
JsonNode input = NodeUtils.mapper.readTree(json);
// now we can do the thing
JsonNode source = NodeUtils.mapper.readTree(input.get("json").asText());
String jslt = input.get("jstl").asText();
Expression template = Parser.compileString(jslt);
JsonNode output = template.apply(source);
return NodeUtils.mapper.writerWithDefaultPrettyPrinter().writeValueAsString(output);
} catch (Throwable e) {
return "ERROR: " + e;
}
}
}
Полезная нагрузка, которую этот API в настоящее время принимает: *
PAYLOAD ::
{
"json":
"[{\"Key1\": \"Value1\", \"Key2\": \"Value2\"},
{\"Key1\": \"Value1\", \"Key2\": \"Value2\"}]",
"jstl":
"\n[\nfor (.)\n{\n \"Key-Change-1\" : .Key1,\n \"Key-Change-2\": .\"Key2\"\n}\n]\n"
}
ВЫХОД вышеуказанной полезной нагрузки ::
[
{
"Key-Change-1": "Value1",
"Key-Change-2": "Value2"
},
{
"Key-Change-1": "Value1",
"Key-Change-2": "Value2"
}
]
Вот что я пытаюсь изменить ::
Я пытаюсь изменить полезную нагрузку на следующий формат
{
"json":
[
{
"Key1": "Value1",
"Key2": "Value2"
},
{
"Key1": "Value1",
"Key2": "Value2"
}
] ,
"template":"{JSLT template}"
}
Какие изменения мне нужно внести в мой код, чтобы разрешить полезную нагрузку вышеуказанного формата?