我爱布朗熊 2023-03-11 12:16 采纳率: 79.4%
浏览 26
已结题

springboot读取yaml文件的map集合

这是我的yaml文件,我想把userDefinedResult这个map集合读取出来
在这个集合中 {"id":"10086","name":"zhangjingqi"} 这整个当作key s当作value,但是我最后读取的结果却不是我想想的那样


usedefinedyaml:
  path:
    userDefinedResult: {
      '{"id":"10086","name":"zhangjingqi"}' : "s"
    }

封装的这个类去读取yaml集合

@Data
@Component
@ConfigurationProperties(prefix = "usedefinedyaml.path")
public class UserDefineMapConfig {
    private HashMap<String,String> userDefinedResult;
}

将数据读取出来后再将map转成json字符串的形式输出

System.out.println(objectMapper.writeValueAsString(userDefineMapConfig.getUserDefinedResult()));

读取后在控制台输出这个集合的内容如下,

img


但是这个输出并没有达到我想要的效果,因为引号没有输出出来,我想达到下面这种效果
{"id":"10086","name":"zhangjingqi"}' : "s"
为啥最后是一个s,因为我打不出好几个s了,我真不知道为什么
朋友们有没有知道这是怎么回事呀,我尝试了好几种方法都不太行

  • 写回答

2条回答 默认 最新

  • MarkHan_ 2023-03-11 12:38
    关注

    该回答引用GPTᴼᴾᴱᴺᴬᴵ
    根据你提供的代码和输出结果,可以看出你的配置文件中userDefinedResult的值被解析成了一个Map<String, Object>,其中键是"{"id":"10086","name":"zhangjingqi"}",值是s。因此,在输出时,使用ObjectMapper转换为JSON字符串时,双引号被去掉了。

    要达到你想要的效果,即将{"id":"10086","name":"zhangjingqi"}作为键,可以将其作为一个单独的字符串作为键,而不是作为JSON对象。修改你的配置文件如下:

    usedefinedyaml:
      path:
        userDefinedResult: {
          "id:10086:name:zhangjingqi" : "s"
        }
    
    
    

    然后将HashMap<String, String>改为HashMap<String, Object>,并且使用ObjectMapper的writeValueAsString方法将值转换为JSON字符串时,将键和值都转换为字符串,以确保双引号不会被去掉。代码如下:

    @Data
    @Component
    @ConfigurationProperties(prefix = "usedefinedyaml.path")
    public class UserDefineMapConfig {
        private HashMap<String, Object> userDefinedResult;
    }
    
    // 输出
    String json = objectMapper.writeValueAsString(
        Collections.singletonMap(
            "\"" + userDefineMapConfig.getUserDefinedResult().keySet().iterator().next() + "\"",
            userDefineMapConfig.getUserDefinedResult().values().iterator().next().toString()
        )
    );
    System.out.println(json);
    
    
    

    这将输出你想要的JSON字符串:

    {"id":"10086","name":"zhangjingqi"}: "s"
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月19日
  • 已采纳回答 3月11日
  • 创建了问题 3月11日

悬赏问题

  • ¥15 运动想象脑电信号数据集.vhdr
  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目