循环map数据加入到list,取数据出现解析错误$ref": "$.returnData[0].ruleList[0]

在某个项目中用到了两个for循环(暂时不考虑其他因素),在内层循环中要操作数据,然后加入到一个list中,在取出的时候,从第二条数据开始就出现错误:$ref": "$.returnData[0].ruleList[0]。

 for (PageData sku : list) {
            List<Gift> listAll = orderGoodsGiftMapper.listAll(pdSku);
            if (null != listAll && !listAll.isEmpty()) {
                for (Gift gift : listAll) {
                    pdSku.put("giftFlag", "true");
                   
                    //循环出现"$ref": "$.returnData[0].ruleList[0]"解析成引用,由于Fastjson解析对象时出现的问题
                    String jsonString = JSON.toJSONString(pdSku, SerializerFeature.DisableCircularReferenceDetect);
                    PageData params = JSONObject.parseObject(jsonString, PageData.class);
                    skuAndGiftList.add(params);

                }
            }
			}

如果直接加入到list,会出现上述问题,网上搜了一下,找到一个解决办法:

String jsonString = JSON.toJSONString(pdSku, SerializerFeature.DisableCircularReferenceDetect);

效果很好。

async openDialog () { console.log(this.objFormData, '编辑信息') // 获所有案由的违规条款选项和依据数据 const optionsMap = new Map() const basisMap = new Map() await Promise.all(this.objFormData.accordList.map(async accord => { // console.log(accord, '打印') const { data: optionData } = await getLawRules(accord.violationAccord) optionsMap.set(accord.violationAccord, lawTreeFilter(optionData)) basisMap.set(accord.violationAccord, accord.accordBasis) })) // 处理条例数据 const gistList = [] for (const accord of this.objFormData.accordList) { accord.accordDetail.forEach(item => { let labels = item.violationClause.split("-").map(str => str.trim()).filter(Boolean) // console.log(labels, 'labels') const illegalOptions = accord.illegalOptions || optionsMap.get(accord.violationAccord) const ruleIdList = [] let options = illegalOptions for (const label of labels) { const option = options.find(opt => opt.label === label) if (option) { ruleIdList.push(option.value) options = option.children } } // console.log(ruleIdList,'ruleIdList') // console.log(options,'options') // 添加选择的数据到数组中 // const selectedData = { // violationAccord: accord.violationAccord, // violationAccordText: accord.violationAccordText, // illegalValue: ruleIdList // } // gistList.push(selectedData) // 添加数据到回显数据中 const elRuleList = [{ illegalValue: ruleIdList }]; console.log(elRuleList,'hhhhhh') const echoData = { gistValue: accord.violationAccordText, ruleList: elRuleList, illegalOptions: illegalOptions, basis: basisMap.get(accord.violationAccord) } this.gistList.push(echoData) }) } },这个方法中,这个 accord.violationAccordText值相等的把他们对应的elRuleList这个值放到一个ruleList里面
05-27
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值