【问题标题】:Inject JSON file into map将 JSON 文件注入地图
【发布时间】:2015-07-13 11:39:40
【问题描述】:

我正在构建一个带有 Spring Boot 后端的单页 Web 应用程序,理想情况下,我希望共享一个 JSON 文件,前端将其用作各种路由枚举,后端用于支持映射某些路线返回/index.html

这是 JSON 文件:

{
  "Login": "/login",
  "ForgotPassword": "/forgot-password",
  "ResetPassword": "/reset-password",
  "Profile": "/profile",
  "Configuration": "/configuration",
  "Administration": "/admin"
}

到目前为止,我一直在 Node.js 中执行以下操作:

for (var pathname in Path) {
    if (Path.hasOwnProperty(pathname)) {
        app.get(Path[pathname], sendIndex);
    }
}

目前我有这个:

@Configuration
public class SpringConfigurations extends WebMvcConfigurerAdapter {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**")
                .addResourceLocations("classpath:/static/");
    }
}

是否有办法将 JSON 文件注入到java.util.Map<String,String>,然后执行以下操作:

@Configuration
public class SpringConfigurations extends WebMvcConfigurerAdapter {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        pathsMap.values().forEach(path -> {
            registry.addResourceHandler(path)
                    .addResourceLocations("classpath:/static/index.html");
        });
        registry.addResourceHandler("/**")
                .addResourceLocations("classpath:/static/");
    }
}

【问题讨论】:

    标签: java json spring spring-boot


    【解决方案1】:

    Json Jackson library(特别是它的bind module)能够加载并解析一个Json文件到一个Map中:

    ObjectMapper mapper = new ObjectMapper();
    Map<String, Object> pathsMap = (Map<String, Object>)mapper.readValue(jsonSource, Map.class);
    

    如果你事先知道所有的值都是Strings,你可以将map定义为&lt;String, String&gt;

    readValue() 具有接受 Reader、Stream、预加载字符串等的重载变体。

    【讨论】:

    • 谢谢,但我已经知道如何手动操作了。我真正在寻找的是一些 Spring 的魔法,可以直接从文件中注入 JSON 配置(类似于从属性文件中自动注入属性的方式)。
    猜你喜欢
    • 2019-11-07
    • 1970-01-01
    • 2021-02-06
    • 2019-03-01
    • 2018-07-04
    • 1970-01-01
    • 2018-09-25
    • 1970-01-01
    • 2018-08-21
    相关资源
    最近更新 更多