Nacos配置之字符串模拟键值对配置

Nacos配置解析与Map处理

Nacos配置代码如下:

#字符串模拟Map键值对
map:
  area: 66:110101,77:[120101;120102;120103],88:310101

MapAreaConfig配置代码如下: 

@Data
@Configuration
@ConfigurationProperties("map")
public class MapAreaConfig {
    private String area;
}

 测试相关代码如下:

    @Resource
    MapAreaConfig mapAreaConfig;

    @Test
    public void mapArea() {
        //stream流方式
        Map<Integer, String> responseMap = Arrays.stream(mapAreaConfig.getArea().split(","))
                .map(s -> s.split(":"))
                .collect(Collectors.toMap(
                        a -> Integer.valueOf(a[0]),//key
                        a -> a[1]//value
                ));
        //Map<Integer, String> responseMap = splitToMap(mapAreaConfig.getArea(), ",", ":");
        List<Integer> integerList = new ArrayList<>(responseMap.keySet());
        Lis
从已有引用可知,在Nacos配置迁移时,配置中存在如Windows + ;中的表情符号,在Nacos 1.4.2版本使用正常,但迁移到2.0.3版本发布失败,虽检查符号无问题,但特殊字符可能是导致问题的原因。另外,当map集合的key和value中添加逗号、双引号等特殊字符时,不能再用之前编写和读取配置文件中map集合的方式。 然而,引用中未提及具体的处理方法。一般来说,在Nacos配置中处理特殊字符可考虑以下通用方法: - **转义处理**:对于一些特殊字符,如引号、反斜杠等,可以使用转义字符进行处理。例如,在JSON格式的配置中,双引号需要用反斜杠转义,即`\"`。 ```json { "key": "This is a \"special\" value" } ``` - **编码处理**:将特殊字符进行编码,如URL编码(`URLEncoder`)或Base64编码。在使用时再进行解码操作。例如,Java中使用`URLEncoder`进行URL编码: ```java import java.net.URLEncoder; import java.io.UnsupportedEncodingException; public class EncodingExample { public static void main(String[] args) { try { String specialValue = "特殊字符!@#$%^&*()"; String encodedValue = URLEncoder.encode(specialValue, "UTF-8"); System.out.println(encodedValue); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } } ``` - **配置格式适配**:根据不同的配置格式(如JSON、YAML、Properties等),遵循其对特殊字符的处理规则。例如,YAML中对于包含特殊字符字符串,可以使用单引号或双引号包裹。 ```yaml key: 'This is a value with special characters!@#' ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值