nacos-group / nacos-spring-boot-project

Nacos ECO Project for Spring Boot
Apache License 2.0
789 stars 424 forks source link

nacos-config-spring-boot不能解析数组形式的json配置文件,只能解析最简单的json对象 #286

Closed willdas closed 1 year ago

willdas commented 1 year ago

只能解析: { "people": { "name": "姓名" } } 不能解析: { "data": [ { "people": { "name": "姓名" } } ] }

DiligenceLai commented 1 year ago

@ i will solved it@

DiligenceLai commented 1 year ago

@Willdas 不知道你所遇到的“不能解析数组形式的json配置文件”的场景是怎样的呢? 看了代码之后,我理解 nacos-config-spring-boot 是可以解析数组形式的json配置文件的,只是它获取值的路径稍微有点不一样,比如: 配置文件:

{
    "people": {
        "enable": true,
        "count": 1234,
        "name": "姓名",
        "data": [
            {
                "aa": {
                    "val": 1230
                },
                "bb": {
                    "val": 2
                }
            }
        ]
    }
}

获取配置文件中的值:

@Value("${people.data[0].aa.val}")
private Object val;

val 值的输出: image

获取数组形式配置的“路径”: {{数组名}}[{{数组下标}}].{{对应的属性名}},形如 arr[0].val

DiligenceLai commented 1 year ago

只能解析: { "people": { "name": "姓名" } } 不能解析: { "data": [ { "people": { "name": "姓名" } } ] }

如果按照你给的这个例子,用 @Value("${data[0].people.name}") 可以获取到对应的 name 值

willdas commented 1 year ago

@Willdas 不知道你所遇到的“不能解析数组形式的json配置文件”的场景是怎样的呢? 看了代码之后,我理解 nacos-config-spring-boot 是可以解析数组形式的json配置文件的,只是它获取值的路径稍微有点不一样,比如: 配置文件:

{
    "people": {
        "enable": true,
        "count": 1234,
        "name": "姓名",
        "data": [
            {
                "aa": {
                    "val": 1230
                },
                "bb": {
                    "val": 2
                }
            }
        ]
    }
}

获取配置文件中的值:

@Value("${people.data[0].aa.val}")
private Object val;

val 值的输出: image

获取数组形式配置的“路径”: {{数组名}}[{{数组下标}}].{{对应的属性名}},形如 arr[0].val

感谢回复,这样是可以的