替换项目而不是给出整个路径
replace the items instead of giving the whole path
在这个 json 中,当我发现以下项目时,我需要对值进行 base64 编码并使用 javascript.
将其替换为编码值
对于这些密钥 pbId、remmedId、remId、pbMedId。
我需要用它们的 base64 编码值替换相应的值。
{
"output": {
"rem": {
"rems": {
"lastNotif": null,
"remmed": [
{
"pbId": "201734",
"remmedId": "2803790",
"remId": "250004",
"class": "com.burst.zumba"
}, {
"pbId": "190244",
"remmedId": "2803788",
"remId": "250004",
"class": "com.burst.zumba"
}
],
"remType": "DAY",
"notifTime": "17:30",
"class": "com.burst.zumba",
"enabled": "Y",
"lastTime": "2014-08-25 16:26:05",
"addedTime": "2014-08-25 16:26:05",
"remFreq": "HOLI",
"name": "test1",
"remId": "250004",
"remOut": [],
"status": "Y",
"pbId": "1250003"
},
"List": [
{
"SSType": "MJD",
"rems": null,
"prsName": "DrJohnSmith",
"prsPhone": "5555555555",
"expDate": "2015-04-14",
"lastDate": "2014-08-13 01:00:12",
"issueDate": null,
"modDate": "2014-08-27 10:15:22",
"writtDate": "2014-04-14",
"pbMedId": "2017346",
"name": "CARDIO",
"SSId": "237421923",
"pbId": "1250007653",
"createdDate": "2014-08-27 10:15:22"
}, {
"SSType": "JCX",
"rems": null,
"prsName": "Dr John Doe",
"prsPhone": "5555555555",
"expDate": "2015-04-14",
"lastDate": "2014-08-13 01:00:12",
"issueDate": null,
"modDate": "2014-09-02 17:38:47",
"writtDate": "2014-04-14",
"pbMedId": "1902449",
"name": "VICTORY",
"class": "237342123",
"pbId": "12503003",
"createdDate": "2014-08-26 14:32:08"
}
]
}
}
}
我可以像 output.rem.rems.remmed 一样通过并找到值。但是有什么办法可以让我像全局搜索一样替换我的对象而不是给出整个路径
此代码以递归方式遍历您的对象。当它找到密钥时,它将使用 btoa
对它们进行 base64 编码。我用 JSON.stringify
写回输出以将结果显示为测试用例。
使用:调用convertToBase64
,第一个参数是数据对象,所有其他参数都是可选的。您可以添加键作为参数。
var data = {
"output": {
"rem": {
"rems": {
"lastNotif": null,
"remmed": [
{
"pbId": "201734",
"remmedId": "2803790",
"remId": "250004",
"class": "com.burst.zumba"
}, {
"pbId": "190244",
"remmedId": "2803788",
"remId": "250004",
"class": "com.burst.zumba"
}
],
"remType": "DAY",
"notifTime": "17:30",
"class": "com.burst.zumba",
"enabled": "Y",
"lastTime": "2014-08-25 16:26:05",
"addedTime": "2014-08-25 16:26:05",
"remFreq": "HOLI",
"name": "test1",
"remId": "250004",
"remOut": [],
"status": "Y",
"pbId": "1250003"
},
"List": [
{
"SSType": "MJD",
"rems": null,
"prsName": "DrJohnSmith",
"prsPhone": "5555555555",
"expDate": "2015-04-14",
"lastDate": "2014-08-13 01:00:12",
"issueDate": null,
"modDate": "2014-08-27 10:15:22",
"writtDate": "2014-04-14",
"pbMedId": "2017346",
"name": "CARDIO",
"SSId": "237421923",
"pbId": "1250007653",
"createdDate": "2014-08-27 10:15:22"
}, {
"SSType": "JCX",
"rems": null,
"prsName": "Dr John Doe",
"prsPhone": "5555555555",
"expDate": "2015-04-14",
"lastDate": "2014-08-13 01:00:12",
"issueDate": null,
"modDate": "2014-09-02 17:38:47",
"writtDate": "2014-04-14",
"pbMedId": "1902449",
"name": "VICTORY",
"class": "237342123",
"pbId": "12503003",
"createdDate": "2014-08-26 14:32:08"
}
]
}
}
}
function convertToBase64(obj)
{
var keys = Object.keys(obj);
var args = Array.prototype.slice.call(arguments, 1); //copy all arguments except the first.
for (var i = 0; i < keys.length; ++i)
{
if ( Object.prototype.toString.call(obj[keys[i]]) == "[object Object]" || Object.prototype.toString.call(obj[keys[i]]) == "[object Array]")
{
convertToBase64.apply(this, [obj[keys[i]]].concat(args));
}
else
{
if ( args.indexOf(keys[i]) > -1)
{
obj[keys[i]] = btoa(obj[keys[i]]);
}
}
}
}
convertToBase64(data, "remmedId", "pbMedId", "remId", "pbId");
document.write(JSON.stringify(data));
在这个 json 中,当我发现以下项目时,我需要对值进行 base64 编码并使用 javascript.
将其替换为编码值对于这些密钥 pbId、remmedId、remId、pbMedId。 我需要用它们的 base64 编码值替换相应的值。
{
"output": {
"rem": {
"rems": {
"lastNotif": null,
"remmed": [
{
"pbId": "201734",
"remmedId": "2803790",
"remId": "250004",
"class": "com.burst.zumba"
}, {
"pbId": "190244",
"remmedId": "2803788",
"remId": "250004",
"class": "com.burst.zumba"
}
],
"remType": "DAY",
"notifTime": "17:30",
"class": "com.burst.zumba",
"enabled": "Y",
"lastTime": "2014-08-25 16:26:05",
"addedTime": "2014-08-25 16:26:05",
"remFreq": "HOLI",
"name": "test1",
"remId": "250004",
"remOut": [],
"status": "Y",
"pbId": "1250003"
},
"List": [
{
"SSType": "MJD",
"rems": null,
"prsName": "DrJohnSmith",
"prsPhone": "5555555555",
"expDate": "2015-04-14",
"lastDate": "2014-08-13 01:00:12",
"issueDate": null,
"modDate": "2014-08-27 10:15:22",
"writtDate": "2014-04-14",
"pbMedId": "2017346",
"name": "CARDIO",
"SSId": "237421923",
"pbId": "1250007653",
"createdDate": "2014-08-27 10:15:22"
}, {
"SSType": "JCX",
"rems": null,
"prsName": "Dr John Doe",
"prsPhone": "5555555555",
"expDate": "2015-04-14",
"lastDate": "2014-08-13 01:00:12",
"issueDate": null,
"modDate": "2014-09-02 17:38:47",
"writtDate": "2014-04-14",
"pbMedId": "1902449",
"name": "VICTORY",
"class": "237342123",
"pbId": "12503003",
"createdDate": "2014-08-26 14:32:08"
}
]
}
}
}
我可以像 output.rem.rems.remmed 一样通过并找到值。但是有什么办法可以让我像全局搜索一样替换我的对象而不是给出整个路径
此代码以递归方式遍历您的对象。当它找到密钥时,它将使用 btoa
对它们进行 base64 编码。我用 JSON.stringify
写回输出以将结果显示为测试用例。
使用:调用convertToBase64
,第一个参数是数据对象,所有其他参数都是可选的。您可以添加键作为参数。
var data = {
"output": {
"rem": {
"rems": {
"lastNotif": null,
"remmed": [
{
"pbId": "201734",
"remmedId": "2803790",
"remId": "250004",
"class": "com.burst.zumba"
}, {
"pbId": "190244",
"remmedId": "2803788",
"remId": "250004",
"class": "com.burst.zumba"
}
],
"remType": "DAY",
"notifTime": "17:30",
"class": "com.burst.zumba",
"enabled": "Y",
"lastTime": "2014-08-25 16:26:05",
"addedTime": "2014-08-25 16:26:05",
"remFreq": "HOLI",
"name": "test1",
"remId": "250004",
"remOut": [],
"status": "Y",
"pbId": "1250003"
},
"List": [
{
"SSType": "MJD",
"rems": null,
"prsName": "DrJohnSmith",
"prsPhone": "5555555555",
"expDate": "2015-04-14",
"lastDate": "2014-08-13 01:00:12",
"issueDate": null,
"modDate": "2014-08-27 10:15:22",
"writtDate": "2014-04-14",
"pbMedId": "2017346",
"name": "CARDIO",
"SSId": "237421923",
"pbId": "1250007653",
"createdDate": "2014-08-27 10:15:22"
}, {
"SSType": "JCX",
"rems": null,
"prsName": "Dr John Doe",
"prsPhone": "5555555555",
"expDate": "2015-04-14",
"lastDate": "2014-08-13 01:00:12",
"issueDate": null,
"modDate": "2014-09-02 17:38:47",
"writtDate": "2014-04-14",
"pbMedId": "1902449",
"name": "VICTORY",
"class": "237342123",
"pbId": "12503003",
"createdDate": "2014-08-26 14:32:08"
}
]
}
}
}
function convertToBase64(obj)
{
var keys = Object.keys(obj);
var args = Array.prototype.slice.call(arguments, 1); //copy all arguments except the first.
for (var i = 0; i < keys.length; ++i)
{
if ( Object.prototype.toString.call(obj[keys[i]]) == "[object Object]" || Object.prototype.toString.call(obj[keys[i]]) == "[object Array]")
{
convertToBase64.apply(this, [obj[keys[i]]].concat(args));
}
else
{
if ( args.indexOf(keys[i]) > -1)
{
obj[keys[i]] = btoa(obj[keys[i]]);
}
}
}
}
convertToBase64(data, "remmedId", "pbMedId", "remId", "pbId");
document.write(JSON.stringify(data));