如何更改JSON数组中的值

时间:2017-03-27 14:19:29

标签: json

我有一个像这样得到json响应的文件:

{
   total": 86,
   "data": [
    {
        "Id": 2,
        "Name": "User One",
        "Shipping": 1,
        "Created": "25 March 2017"
    },
    {
        "Id": 3,
        "Name": "User Two",
        "Shipping": 2,
        "Created": "25 March 2017"
    },
    {
        "Id": 4,
        "Name": "User Three",
        "Shipping": 3,
        "Created": "26 March 2017"
    }
  ]
}

我想运行此结果并将所有Shipping值更改为:

1个邮局

2 PostNet

3 Courier

在我的代码中我做了:

$.each(data.data, function () {
      $.each(this, function (key, value) {
         if(key == 'Shipping') {
             switch(value) {
               case 2:
                   ? = 'PostNet';
                   break;
               case 2:
                   ? = 'Courier';
                   break;
               default:
                   ? = 'Post Office';
                   break;
               }

         }
      });
});

我不知道如何获得正确的数组键,以便我可以更改它,我把它放在哪里?。

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

你很亲密。

循环通过JSON object。当密钥匹配字符串时,请创建switch。匹配其中一个值后,将父循环值更改为所需的值。

将您的JS改为:

$.each(data.data, function (key, value) {    
    $.each(this, function(k, v) {
        if(k == 'Shipping') {
             switch(v) {
                    case 1:
                   value.Shipping = 'PostNet';
                   break;
                case 2:
                   value.Shipping = 'Courier';
                   break;
                default:
                   value.Shipping = 'Post Office';
                   break;
             }
        }
    });
});

https://jsfiddle.net/zeopL56n/2/ (请参阅控制台日志)

答案 1 :(得分:0)

你必须这样做:

$.each(data.data, function () {
    switch(this.Shipping) {
    case 1: 
        this.Shipping='PostNet';
        break;
    case 2: 
        this.Shipping='Courier';
        break;
    default: 
        this.Shipping='Post Office';
    }
});

查看控制台以查看更新的对象。

这是fiddle