商品规格存储问题

时间:2024-03-25 18:41:34

准备条件

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.76</version> <!-- 指定您需要的 FastJSON 版本 -->
        </dependency>
    @Test
    void test6() {
        // 创建 JSON 对象
        JSONObject jsonObject = new JSONObject();

        // 创建内存选项的数组
        JSONArray memoryArray = new JSONArray();
        memoryArray.add("2G");
        memoryArray.add("4G");

        // 创建颜色选项的数组
        JSONArray colorArray = new JSONArray();
        colorArray.add("红色");

        // 将内存选项数组和颜色选项数组放入 JSON 对象中
        jsonObject.put("内存", memoryArray);
        jsonObject.put("颜色", colorArray);

        // 输出 JSON 格式的字符串
        System.out.println(jsonObject.toJSONString());
    }
    @Test
    void test8(){
        ScSpecs scSpecs = scSpecsMapper.selectById(1);

        String productSpecs = scSpecs.getProductSpecs(); // 字符串json格式

        Map<String, List<String>> maps = (Map) JSON.parse(productSpecs);
        // 使用流(Stream)遍历 Map 中的键值对
        maps.entrySet().stream().forEach(entry -> {
            String key = entry.getKey();
            List<String> values = entry.getValue();
            System.out.println(key + ": " + values);
        });

    }

Json key value

    // json key value
    @Test
    void test5() {
        int id = 1;
        JSONObject jsonObject = new JSONObject(); // 创建 JSON 对象

        // 根据id从数据库中获取ScCategories对象
        ScCategories scCategories = scCategoriesMapper.selectById(id);

        // 根据ScCategories对象的id查询对应的ScAttributeKey对象列表
        List<ScAttributeKey> scAttributeKeys = scAttributeKeyMapper.selectList(new LambdaQueryWrapper<ScAttributeKey>()
                .eq(ScAttributeKey::getCategoriesId, scCategories.getId()));

        // 遍历ScAttributeKey对象列表
        scAttributeKeys.forEach(record -> {
            // 根据ScAttributeKey对象的id查询对应的ScAttributeValue对象列表
            List<ScAttributeValue> scAttributeValues = scAttributeValueMapper.selectList(new LambdaQueryWrapper<ScAttributeValue>()
                    .eq(ScAttributeValue::getAttributeId, record.getId()));

            // 创建属性值的 JSONArray
            JSONArray attributeValuesArray = new JSONArray();

            // 遍历ScAttributeValue对象列表
            scAttributeValues.forEach(value -> {
                // 添加属性值到 JSONArray 中
                attributeValuesArray.add(value.getAttributeValue());
            });

            // 将属性名和对应的属性值 JSONArray 放入 JSON 对象中
            jsonObject.put(record.getAttributeName(), attributeValuesArray);
        });

        // 输出 JSON 格式的字符串
        System.out.println(jsonObject.toJSONString());
    }

数组 Key Value

    @Test
    void test4() {


        ArrayList<ArrayList<String>> srt = new ArrayList<>();  //  [[颜色,红色][尺寸,小]]

        List<ScCategories> scCategories = scCategoriesMapper.selectList(null);

        scCategories.forEach(record -> {
            List<ScAttributeKey> scAttributeKeys = scAttributeKeyMapper.selectList(new LambdaQueryWrapper<ScAttributeKey>().eq(ScAttributeKey::getCategoriesId, record.getId()));

            scAttributeKeys.forEach(reo -> {
                List<ScAttributeValue> scAttributeValues = scAttributeValueMapper.selectList(new LambdaQueryWrapper<ScAttributeValue>().eq(ScAttributeValue::getAttributeId, reo.getId()));

                // 假设每个 ScAttributeKey 对象只包含一个 ScAttributeValue 对象
                scAttributeValues.forEach(ro -> {
                    ArrayList<String> pair = new ArrayList<>();
                    pair.add(reo.getAttributeName());
                    pair.add(ro.getAttributeValue());
                    srt.add(pair);
                });
            });
        });

        buildMenuTree(scCategories);
        System.out.println(srt);
        System.out.println(scCategories);
    }