Jquery 需要将键映射到JSON正文中的参数

Jquery 需要将键映射到JSON正文中的参数,jquery,mapping,Jquery,Mapping,我需要在正文中发送一个HTTP API和一些JSON,如: var body = { 'param1': 'param1 value', 'param2': 'param2 value', 'param3': 'param3 value', 'param4': 'param4 value', 'param5': 'param5 value', 'para

我需要在正文中发送一个HTTP API和一些JSON,如:

var body = {
            'param1': 'param1 value',
            'param2': 'param2 value',
            'param3': 'param3 value',
            'param4': 'param4 value',
            'param5': 'param5 value',
            'param6': 'param6 value'
       };
但我必须从中建立的来源是

var datasource = {
            'x4001': 'param1 value',
            'jd5jj': 'param2 value',
            'mmmmmoose': 'param3 value',
            'simple': 'param4 value',
            'crayonx3': 'param5 value',
            'hubbabubba': 'param6 value'
       };
必须有一个快速的jQuery replace/map函数来从数据源JSON创建我的“body”变量,以便“x4001”变为“param1”,“jd5jj”变为“param2”,等等,以获得我想要的body

在我看到的其他答案中,我看到了如下情况:

function renameProperty(obj, fromKey, toKey) {
  obj[toKey] = obj[fromKey];
  delete obj[fromKey];
}

addObjectResponse.forEach(obj => renameProperty(obj, 'SP02', 'O2'));
但是我的JavaScript/jQuery根本不理解其中包含
=>
(看起来像是C#中的LINQ语句)


所以-要么我使用了错误的jQuery,要么我需要一个不同的解决方案?

因为您正在重命名
数据源中的所有键,所以定义“键映射”并使用它从旧名称中查找新名称是最简单的:

var键映射={
x4001:“参数1”,
jd5jj:“param2”,
嗯,嗯,oose:“param3”,
简单:“param4”,
蜡笔3:“param5”,
hubbabubba:“param6”
};
变量数据源={
x4001:“参数1值”,
jd5jj:“参数2值”,
mmmmm oose:“参数3值”,
简单:“param4值”,
蜡笔3:“参数5值”,
hubbabubba:“参数6值”
};
var body={};
for(数据源中的var键)
body[keymap[key]]=数据源[key];

控制台日志(主体)
您可以使用
JSON.stringify()
String.prototype.replace()
替换为
RegExp
/“([\w\d])+”(?=:)/g

var n=0;
变量数据源={
“x4001”:“参数1值”,
'jd5jj':'param2 value',
'mmmmm oose':'param3 value',
“简单”:“参数4值”,
“蜡笔X3”:“参数5值”,
“hubbabubba”:“param6值”
};
var body=JSON.parse(
stringify(数据源)
.replace(/“([\w\d]+)”(?=:)/g,函数(匹配){
返回`“param${++n}”`
})
);

控制台日志(主体)在答案中提供的示例中,我看到了如下内容:body.forEach(obj=>renameProperty(obj,'Title','requestor name');或者addObjectResponse.forEach(obj=>renameProperty(obj,'SP02','O2'))。。。我的javascript/jquery不理解像“=>”这样的东西,它只是阻塞了,所以这些答案不起作用。它还演示了新键的设置和旧键的删除,构成了一个“重命名”,名称param1不一定是“param1”-它可以是“justified date”@robertachman然后您可以使用一个值数组来设置替换sting
返回arr[n++]
@robertachman请参阅更新的帖子