我爱布朗熊 2023-03-11 12:16 采纳率: 78.8%
浏览 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日

悬赏问题

  • ¥20 qt中connect两个signal
  • ¥20 pix2pixHD运行测试命令时出现数据类型错误无法反向传播的问题
  • ¥15 python处理Excel符合条件的行自动填写数据分类
  • ¥15 汇编hook举例并讲解(通俗易懂,学习用)
  • ¥20 用c++语言模拟键盘电子琴设计
  • ¥15 STM32cubemx生成keil工程,有问题与正常的情况不同,求解!
  • ¥15 如何自动点击银行app的安全键盘,实现密码自动输入
  • ¥15 关于四边形重叠的问题
  • ¥15 用verilog语言设计一个简易的八音符电子琴,可通过按键输入来控制音响。演奏时可以选择是手演奏(由键盘输入)或自动演奏已存入的乐曲。能够自动演奏多首乐曲,且每首乐曲可重复演奏
  • ¥15 sap gui脚本每次到导出Excel的时候就停住不动。不会另存为。