Как передать JSON из статического файла в контроллер остальных приложений SpringBoot - PullRequest
0 голосов
/ 26 апреля 2019

У меня есть стабильный проект SpringBoot, который работает.Я хочу добавить конечную точку, которая считывает файл json из classpath и передает его в ответ без необходимости создания каких-либо объектов Model (pass thru).

У меня нет проблем с чтением файла json в JsonNode илиObjectNode, я борюсь с тем, куда идти дальше, чтобы установить данные в моем объекте ответа.

Добавил это предупреждение позже, мне нужно обновить json из базы данных.

1 Ответ

0 голосов
/ 27 апреля 2019

Хорошо, в паре с коллегой на работе, и мы попробовали две вещи: вернуть строку (экранирует строки в выводе REST - возвращает большую строку.) Не хорошо. Что работало, так это установление объекта ответа и вызов mapper.readValue (jsonFeed, Map.class), который возвращал JSON в правильной записи объекта.

    @Value("${metadata.json.file}") //defined in application.context
    private Resource metaJsonFileName;

    public String getJsonFromFile(List<UnitUiItem> uiitems){
        JsonNode root;
        ObjectMapper mapper = new ObjectMapper();
        InputStream stream = metaJsonFileName.getInputStream();

        root = mapper.readTree(stream);
        JsonNode dataNode = root.get("data");
        JsonNode optionDataNode = dataNode.get("storelocation");

        ((ObjectNode)optionDataNode).putArray("units");
       for(UnitUiItem item : uiitems){
        JsonNode unitNode = ((ObjectNode)optionDataNode).withArray("units").addObject();
        ((ObjectNode)unitNode).put("code",item.getCode());
        ((ObjectNode)unitNode).put("displayName",item.getDisplayName());
    }

    LOGGER.info("buildMetaJson exit");
    return root.toString();
    }

    //calling method
    String jsonFeed = getJsonFromFile();
    ObjectMapper mapper = new ObjectMapper();
    response.setData(mapper.readValue(jsonFeed, Map.class));

У меня есть какая-то очистка кода ... какие-нибудь более чистые способы сделать это?

...