js 将json数据转化为?&的形式

1. js 将json数据转化为?&的形式

  将JSON数据转化为?&的形式”(将JSON数据转换为?&格式)。“?&格式”几乎肯定是指查询字符串格式(key1=value1&key2=value2),通常前面会带一个?(例如,?foo=bar&baz=qux)。
  在 JavaScript 中,将 JSON(对象)转化为 ?key=value&key2=value2 这种形式(即 URL Query String,查询字符串)。

1.1. 手写递归函数(处理深层嵌套对象)

  如果 JSON 里有嵌套对象或数组(比如 { user: { id: 1 } }),URLSearchParams 处理得不够直观(会变成 [object Object])。这时可以使用递归函数,将其转化为 user[id]=1 或 tags[]=1&tags[]=2 的格式。

function jsonToQueryString(obj, prefix = null) {
  const pairs = [];

  for (const key in obj) {
    if (!obj.hasOwnProperty(key)) continue;
    
    const value = obj[key];
    const fullKey = prefix ? `${prefix}[${key}]` : key; // 生成 user[id] 这种格式

    // 处理 null 和 undefined(跳过或置空)
    if (value === null || value === undefined) {
      continue;
    }

    // 递归处理嵌套对象
    if (typeof value === 'object' && !Array.isArray(value)) {
      pairs.push(jsonToQueryString(value, fullKey));
    } 
    // 处理数组(PHP常见风格: tags[]=1&tags[]=2 )
    else if (Array.isArray(value)) {
      for (const item of value) {
        pairs.push(`${fullKey}[]=${encodeURIComponent(item)}`);
      }
    } 
    // 处理基本类型
    else {
      pairs.push(`${fullKey}=${encodeURIComponent(value)}`);
    }
  }

  return pairs.join('&');
}

// 使用示例
const data = {
  user: { id: 1, name: 'Alex' },
  interests: ['coding', 'music']
};

const str = jsonToQueryString(data);
console.log('?' + str); 
// 输出: ?user[id]=1&user[name]=Alex&interests[]=coding&interests[]=music

  优点:有嵌套对象/数组,不想引入库。使用上面的 手写递归函数(注意后端接受格式,如 user[id] 或 user.id)。
  注意:拼接到 URL 时,如果原本 URL 已有 ?,请使用 & 连接,否则直接用 ? 拼接。所有值建议经过 encodeURIComponent 编码(上述方法均已自动处理)。

1.2. Vue封装

//src/helper/initHelper
/**
 * json数据转化成?&地址参数形式
 */
const jsonToParam = (obj, prefix = null) => {
    const pairs = [];
    for (const key in obj) {
        if (!obj.hasOwnProperty(key)) continue;
        const value = obj[key];
        // 生成 user[id] 这种格式
        const fullKey = prefix ? `${prefix}[${key}]` : key;
        // 处理 null 和 undefined(跳过或置空)
        if (value === null || value === undefined) {
            continue;
        }
        // 递归处理嵌套对象
        if (typeof value === 'object' && !Array.isArray(value)) {
            pairs.push(jsonToQueryString(value, fullKey));
        }
        // 处理数组(PHP常见风格: tags[]=1&tags[]=2 )
        else if (Array.isArray(value)) {
            for (const item of value) {
                pairs.push(`${fullKey}[]=${encodeURIComponent(item)}`);
            }
        }
        // 处理基本类型
        else {
            pairs.push(`${fullKey}=${encodeURIComponent(value)}`);
        }
    }
    return "?"+pairs.join('&');
}


export default {
    jsonToParam: jsonToParam,
}
    //使用
    let paramObj = {}
    paramObj.username = "admin"
    paramObj.password =  "admin123"
    let param=  initHelper.jsonToParam(paramObj);
内容概要:本文研究了在通信资源受限与恶意攻击干扰下的孤岛微电网分布式二次控制策略,提出了一种兼具通信效率与攻击弹性的动态事件触发控制方案,旨在实现电压频率的精确恢复与有功无功功率的均衡共享。通过Simulink仿真与Matlab代码实现,系统验证了该策略在显著降低通信频次的同时,能够有效抵御拒绝服务(DoS)等网络攻击,保障微电网在复杂环境下的稳定运行。研究深入探讨了动态事件触发机制的设计、分布式控制算法的弹性优化,并确保系统具备排除芝诺行为的能力,从而全面提升微电网在极端条件下的鲁棒性、可靠性与运行效率。; 适合人群:具备电力系统、自动化或相关领域基础知识,从事微电网、分布式控制、能源系统安全方向研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于孤岛微电网在遭受通信限制和网络攻击时的二次电压与频率调节;②为高比例新能源接入场景下的微电网提供具备攻击容忍能力的弹性控制解决方案;③支持科研仿真验证与教学演示,推动分布式能源系统安全控制技术的发展。; 阅读建议:建议结合提供的Simulink模型与Matlab代码进行仿真实践,深入理解控制策略的实现细节,并可通过修改攻击模型、通信参数或网络拓扑进行拓展性研究,以全面掌握其弹性机制与优化潜力。
上市公司绿色全要素生产率(Green Total Factor Productivity,简称GTFP)是衡量企业绿色发展和资源配置效率的重要指标,其不仅关注经济效益,还强调环境效益,体现了绿色发展理念。 一、上市公司绿色全要素生产率的介绍 上市公司绿色全要素生产率是衡量企业在实现绿色发展的过程中,如何有效地利用劳动、资本、能源等资源进行生产的综合效率。本分享数据涵盖2500+家上市公司,数据年份为2007-2022年,共46424条样本,含证券代码、年份、绿色全要素生产率、绿色技术效率变化指数、绿色技术进步变化指数。 二、数据指标 绿色全要素生产率 绿色技术效率变化指数 绿色技术进步变化指数 用于衡量企业绿色发展效率的综合指标 反映绿色技术使用效率的变化 衡量绿色技术进步的效果 三、测算方式 企业绿色全要素生产率的测算采用了非径向SBM-ML指数(简称“ML指数”)模型。该模型通过将企业的环境污染、绿色技术进步等因素纳入生产效率评价体系,全面反映了企业在绿色发展方面的整体表现。 具体的测算方式如下: (1)要素投入:以企业员工数作为劳动投入的代理变量,企业固定资产净额作为资本投入的代理变量,企业所在城市的工业用电量根据企业从业人员占城市城镇人员就业比重进行换算作为能源投入的代理变量。 (2)期望产出:以企业的营业收入作为期望产出的代理变量。 (3)非期望产出:将企业从业人员占所在城市城镇人员就业比重与“工业三废”(即工业二氧化硫、工业废水、工业烟粉尘排放量)结合,进行换算,作为非期望产出的代理变量。 四、参考文献 崔立志,孙旺,黄敏敏.新能源示范城市建设对企业绿色全要素生产率的影响研究——基于A股上市公司的实证分析[J].广西财经学院学报,2023,36(01):92-104. 五、数据来源 数据来源于《中国城市统计年鉴》、《中国环境统计年鉴》、
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值