按指定格式遍历集合字符串

一般遍历

package cn.itcast.day04.demo02;

import java.util.ArrayList;

public class Demo07ArrayList {
    //一般遍历list集合
    public static void main(String[] args) {
        ArrayList<Integer>list=new ArrayList<Integer>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        System.out.println(list);
    }

输出为:

                                                                                  


按指定格式遍历集合字符串

比如说:输出格式为:{1@2@3@4}

package cn.itcast.day04.demo02;

import java.util.ArrayList;

public class Demo07ArrayList {
    //一般遍历list集合
    public static void main(String[] args) {
        ArrayList<String>list=new ArrayList<String>();
        list.add("你好");
        list.add("我是张三丰");
        list.add("你是谁");
        list.add("你来自哪里");
        //把集合作为参数传递
        printArrayList(list);

    }
    //打印的方法
    public static void printArrayList(ArrayList<String>list){
        System.out.print("{");
        for(int i=0;i<list.size();i++){
            System.out.print(list.get(i));
            if(i<list.size()-1) { //为了控制最后一个元素后面没有@
                System.out.print("@");
            }else{
                System.out.println("}");
            }
        }
    }
}

打印结果:

                                                  

### 解析 MySQL 中的 JSON 字符串 在 MySQL 中处理 JSON 数据时,可以利用内置函数 `JSON_TABLE` 和其他辅助函数来提取和遍历 JSON 对象中的所有值。对于复杂结构的数据,这种方法尤为有效。 #### 使用 JSON_TABLE 函数解析 JSON 数组 假设有一个表名为 `example_table` 的表格,其中包含一列 `json_column` 存储着如下形式的 JSON 数组: ```json [ {"key": "a", "value": 1}, {"key": "b", "value": 2} ] ``` 为了从中抽取所有的键值对,特别是获取所有的 `value` 值,可以通过下面的方式实现: ```sql SELECT jt.value FROM example_table, JSON_TABLE( json_column, '$[*]' COLUMNS ( key CHAR(10) PATH '$.key', value INT PATH '$.value' ) ) AS jt; ``` 这段 SQL 查询语句定义了一个内联视图 `jt` 来表示通过 `JSON_TABLE()` 函数换后的临时关系型数据集。这里指定了两个字段:一个是字符类型的 `key`;另一个是整数类型的 `value`。最后选择了这些记录里的 `value` 列作为输出结果[^1]。 如果遇到更复杂的嵌套情况,比如多层对象或数组,则可能需要多次调用 `JSON_EXTRACT` 或者调整路径表达式的写法以适应具体需求[^2]。 #### 处理单个 JSON 对象的情况 当面对的是单一的对象而非数组时,同样适用上述方法,只需修改路径表达式即可满足不同的层次结构要求。例如给定这样的 JSON 文本: ```json { "row_1": {"id": 1, "data": "first"}, "row_2": {"id": 2, "data": "second"} } ``` 此时应构建相应的查询逻辑去适配这种特定模式下的键名变化规律: ```sql WITH RECURSIVE keys AS ( SELECT JSON_KEYS(json_column) as all_keys, 1 as level FROM example_table UNION ALL SELECT JSON_UNQUOTE(JSON_EXTRACT(all_keys, CONCAT('$[', level - 1, ']'))) as single_key, level + 1 FROM keys WHERE JSON_LENGTH(all_keys) >= level ) SELECT DISTINCT k.single_key, JSON_UNQUOTE(JSON_EXTRACT(t.json_column, CONCAT('$.', k.single_key, '.id'))) as id_val, JSON_UNQUOTE(JSON_EXTRACT(t.json_column, CONCAT('$.', k.single_key, '.data'))) as data_val FROM keys k CROSS JOIN example_table t WHERE k.level > 1 AND k.single_key IS NOT NULL; ``` 此脚本首先创建一个递归公用表表达式(CTE),用于迭代地展开顶层键列表。接着,在主查询部分连接原始表与生成的键集合,并针对每一个键执行两次 `JSON_EXTRACT` 调用来分别取得对应的 `id` 和 `data` 属性值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值