You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JSON数组能否故意重复条目?如何用C#实现发货标签数据重复功能

问题解答

可行性说明

这种操作完全可以在JSON数组中实现。JSON数组本身是有序的元素集合,支持按自定义顺序插入元素,完全满足你「原条目在前、复制的相同条目紧跟在后方」的需求。

注意事项

你提供的伪代码存在判断顺序的逻辑问题:现有逻辑中x>840的分支永远不会触发,因为840满足x>=48的前置判断,需要调整判断优先级,把数值最大的区间判断放在最前面。
修正后的判断规则如下:

  • 当PackagingCount > 840时,固定生成14份标签
  • 当48 ≤ PackagingCount ≤ 840时,按PackagingCount/60向上取整计算标签份数
  • 当PackagingCount < 48时,按PackagingCount/12向上取整计算标签份数

C# 实现代码

假设你使用的是Newtonsoft.Json处理JSON数据(绝大多数报表构建工具的C#环境默认集成该类库),参考代码如下:

using Newtonsoft.Json.Linq;
using System;

// 放在DoBeforeYouPrint方法内的逻辑
public void DoBeforeYouPrint()
{
    // 替换为你实际从报表上下文获取的原始JSON数据源
    JArray originalDataSource = 你的报表原始数据源对象 as JArray;
    JArray newDataSource = new JArray();

    foreach (JObject entry in originalDataSource)
    {
        // 将字符串类型的PackagingCount转为整数
        if (!int.TryParse(entry["PackagingCount"]?.ToString(), out int packagingCount))
        {
            // 异常场景:如果PackagingCount不是合法数字,默认保留1份
            newDataSource.Add(new JObject(entry));
            continue;
        }

        int copyCount;
        // 按修正后的规则计算份数
        if (packagingCount > 840)
        {
            copyCount = 14;
        }
        else if (packagingCount >= 48)
        {
            copyCount = (int)Math.Ceiling((double)packagingCount / 60);
        }
        else
        {
            copyCount = (int)Math.Ceiling((double)packagingCount / 12);
        }

        // 按份数复制条目,按顺序加入新数据源
        for (int i = 0; i < copyCount; i++)
        {
            // 深拷贝条目,避免修改一个条目影响其他重复项
            JObject duplicatedEntry = new JObject(entry);
            newDataSource.Add(duplicatedEntry);
        }
    }

    // 将新生成的数据源替换回报表对象
    你的报表对象.DataSource = newDataSource;
}

额外说明

  • 如果你的报表工具用的是System.Text.Json处理JSON,逻辑完全一致,仅JSON操作类的API有细微差别,替换对应写法即可
  • 代码中增加了非法数值的容错处理,避免因脏数据导致报表打印失败
  • 生成的新JSON数组顺序完全符合你的要求,每个原条目后方紧跟对应数量的完全相同的复制条目,报表工具可直接识别打印

内容的提问来源于stack exchange,提问作者Arne Richardsen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 16:27:01