Как изменить код, чтобы он принимал полезную нагрузку API в виде списка объектов JSON вместо строки объектов? Давно сталкивался с этой проблемой - PullRequest
0 голосов
/ 24 октября 2019

Вот мой код ::

@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}"
}

Какие изменения мне нужно внести в мой код, чтобы разрешить полезную нагрузку вышеуказанного формата?

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