2013-05-08 1 views
1

Я просто хочу изменить все ключи в пакетахX. Но я не могу изменить все ключи из-за concat. Это то, что я узнал от post.Javascript: Используя функцию reviver, я, похоже, не могу изменить все ключи, но причисления чисел

Пожалуйста, сообщите, как я могу изменить все ключи с номерами.

var batchesX = '[{"batch":"0010002033"},{"batch":"0010001917"},{"batch":"0000020026"},{"batch":"0000017734"},'+ 
        '{"batch":"0000015376"},{"batch":"0000014442"},{"batch":"0000014434"},{"batch":"0000014426"},'+ 
        '{"batch":"0000013280"},{"batch":"0000012078"},{"batch":"0000012075"},{"batch":"0000012072"},'+ 
        '{"batch":"0000011530"},{"batch":"0000011527"},{"batch":"0000011342"},{"batch":"0000010989"},'+ 
        '{"batch":"0000010477"},{"batch":"0000008097"},{"batch":"0000007474"},{"batch":"0000006989"},'+ 
        '{"batch":"0000004801"},{"batch":"0000003566"},{"batch":"0000003565"},{"batch":"0000001392"},'+ 
        '{"batch":"0000001391"},{"batch":"0000000356"},{"batch":"0000"},{"batch":"000"},{"batch":""},'+ 
        '{"batch":null}]'; // 30 elements 
        //in JSON text 

    var batchi = "batch"; 

    var obj_batchesY = JSON.parse(batchesX); 
    console.debug(obj_batchesY); 

    var obj_batchesYlength = obj_batchesY.length; 
    console.debug(obj_batchesYlength); 

    var obj_batchesX = JSON.parse(batchesX, 
     function(k,v) 
     { 
      for(var i=1; i <= obj_batchesYlength; i++) 
      { 

       if(k=="batch") 
       { 
        this.batchi.concat(string(i)) = v; 
       } 
       else 
        return v; 
      } 
     } 

    ); 
    console.debug(obj_batchesX); 

Является ли код слишком длинным намотчиком?

Большое спасибо заранее. Clement

+0

нет решения для этого? – user1739825

+0

Извините, но я не понимаю, как вы хотите, чтобы результат выглядел. Если ваш объект станет '[{batch0:" 0010002033 "}, {batch1:" 0010001917 "}, ...]' или '{batch0:" 0010002033 ", batch1:" 0010001917 ", ...}' или что-то еще? – Bergi

ответ

0

Возвращаемое значение reviver function только заменяет значения. Если вам необходимо заменить ключи, а затем использовать stringify и replace перед parse вызова, например:

JSON.parse(JSON.stringify({"alpha":"zulu"}).replace('"alpha":','"omega":')) 

Вот как заменить все цифровые клавиши:

function newkey() 
    { 
    return Number(Math.random() * 100).toPrecision(2) + RegExp.$1 
    } 

//Stringify JSON 
var foo = JSON.stringify({"123":"ashanga", "12":"bantu"}); 

//Replace each key with a random number without replacing the ": delimiter 
var bar = foo.replace(/\d+("?:)/g, newkey) 

//Parse resulting string 
var baz = JSON.parse(bar); 

Убедитесь, что каждый заменить ключ уникален , так как дублирующиеся ключи будут удалены с помощью метода parse.

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

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