Jquery 需要将键映射到JSON正文中的参数
我需要在正文中发送一个HTTP API和一些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
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请参阅更新的帖子