【问题标题】:Convert string csv in JSON to array variable将 JSON 中的字符串 csv 转换为数组变量
【发布时间】:2015-11-20 13:32:19
【问题描述】:

我有以下 JSON 数据:

[
    {
        "Title": "PAGE A",
        "Users": "USRA"
    },
    {
        "Title": "PAGE B",
        "Users": "USRA,USRB"
    }
]

将带有“,”的字段转换为数组的最佳方法是什么?并开始使用 javascript:

[
    {
        "Title": "PAGE A",
        "Users": "USRA"
    },
    {
        "Title": "PAGE B",
        "Users": ["USRA","USRB"]
    }
]

【问题讨论】:

  • 看看here
  • 您需要将第一个用户设为"Users": ["USRA"]
  • 你到底为什么想要一个不一致的数据类型?将它们全部设为数组,不管它们是否只有 1 个元素

标签: javascript json csv


【解决方案1】:

你可以这样做:

data = [
    {
        "Title": "PAGE A",
        "Users": "USRA"
    },
    {
        "Title": "PAGE B",
        "Users": "USRA,USRB"
    }
]

data.forEach(function(item) {
    // the if clause keeps the single user outside of an array
    if (item.Users && item.Users.indexOf(',') >= 0) {
        item.Users = item.Users.split(',');
    }
})

如果您希望保持一致的数据类型(使Users 属性始终为Array):

data.forEach(function(item) {
    item.Users = item.Users ? item.Users.split(',') : [];
})

【讨论】:

    【解决方案2】:

    你只需要一个简单的分割线

    var data = [
        {
            "Title": "PAGE A",
            "Users": "USRA"
        },
        {
            "Title": "PAGE B",
            "Users": "USRA,USRB"
        }
    ];
    
    data.forEach( function (obj) {
        obj.Users = obj.Users.split(",");
    });
    

    现在如果你真的不希望那个是一个数组,那么你需要添加一个 if 检查。

    data.forEach( function (obj) {
        var parts = obj.Users.split(",");
        if(parts.length>1) {
            obj.Users = parts;
        }
    });
    

    【讨论】:

      【解决方案3】:

      做这样的事情

      var input = [
              {
                  "Title": "PAGE A",
                  "Users": "USRA"
              },
              {
                  "Title": "PAGE B",
                  "Users": "USRA,USRB"
              }
          ];
      
      var output = [];
      
      output = input.map(function(d){
            for (key in d){
              if (d[key].indexOf(',') !== -1){
                d[key] = d[key].split(',');
                }
            } 
           return d;
      
      });
      
      $('#result').html(JSON.stringify(output));
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
      <div id="result"></div>

      【讨论】:

      • 感谢这是一个很好的答案,因为它测试了所有键的“aaa, bbb” csv 问题。
      猜你喜欢
      • 2019-09-01
      • 2020-11-26
      • 1970-01-01
      • 2013-05-05
      • 2018-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多