2015-01-20 2 views
-1

В этом 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" 
       } 
      ] 
     } 
    } 
} 

Я могу пройти через выход.rem.rems.remmed и найти значение. Но есть ли способ, который я могу сделать, как глобальный поиск и заменить мои объекты, а не на весь путь.

+1

Это возможно, но не желательно. Это объект, который вы можете повторить рекурсивно. – Mouser

+0

Как это сделать итерации рекурсивно – mnvbrtn

ответ

0

Этот код рекурсивно итерации над вашими объектами. Когда он найдет ключи, он будет кодировать их base64, используя btoa. Я написал вывод обратно с 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" 
 
       } 
 
      ] 
 
     } 
 
    } 
 
} 
 

 
\t function convertToBase64(obj) 
 
\t { 
 
\t \t var keys = Object.keys(obj); 
 
\t \t var args = Array.prototype.slice.call(arguments, 1); //copy all arguments except the first. 
 
\t \t for (var i = 0; i < keys.length; ++i) 
 
\t \t { 
 
\t \t \t if (Object.prototype.toString.call(obj[keys[i]]) == "[object Object]" || Object.prototype.toString.call(obj[keys[i]]) == "[object Array]") 
 
\t \t \t { 
 
\t \t \t \t convertToBase64.apply(this, [obj[keys[i]]].concat(args)); 
 
\t \t \t } 
 
\t \t \t else 
 
\t \t \t { 
 
\t \t \t \t if (args.indexOf(keys[i]) > -1) 
 
\t \t \t \t { 
 
\t \t \t \t \t obj[keys[i]] = btoa(obj[keys[i]]); 
 
\t \t \t \t } 
 
\t \t \t } 
 
\t \t } 
 
\t } 
 

 
\t convertToBase64(data, "remmedId", "pbMedId", "remId", "pbId"); 
 
\t document.write(JSON.stringify(data));

+0

Спасибо, если я хочу сделать шифрование с помощью функции шифрования cryptoJs с помощью некоторой секретной фразы – mnvbrtn

+0

Внесите библиотеку, прочитайте спецификацию и замените функцию 'btoa' на функцию из cryptojs – Mouser

+0

, добавив в качестве другого ответа как Я не могу держать все – mnvbrtn

 Смежные вопросы

  • Нет связанных вопросов^_^