【问题标题】:How to convert a JSON object string to a Javascript array如何将 JSON 对象字符串转换为 Javascript 数组
【发布时间】:2016-10-09 01:05:01
【问题描述】:

我从服务传回了一个 JSON 对象,并使用 JSON.stringify 将其转换为字符串,但所需的输出与下面第一个示例中所示的不同:

在对 JSON 对象进行 stringify 调用后 看起来像

[{"RID":"98798","appName":"TestApp"},{"RID":"98799","appName":"TestApp Two"}]

需要是什么样子:

["98798 TestApp","98799 TestApp Two"];

如何将 JSON 对象转换为可展示的 javascript 数组?

我试过的 -

  • 我尝试调用第一个 stringify,它没有提供如上所示的所需格式:

    var ridAppList = JSON.stringify(dataRID);

  • 我还尝试使用 parseJSON 将该字符串化字符串转换为 JS 数组,但得到的结果类似于 - [object Obect], [object Object]:

    var ridAppList = $.parseJSON('[' + ridAppList + ']');

这是上下文的完整分配。在 Ajax GET 调用的成功函数中返回一个 JSON 对象

           success: function (result) {
                var dataRID;
                dataRID = result;
                ridAppList = JSON.stringify(dataRID);
                alert(ridAppList);

            },

【问题讨论】:

    标签: javascript jquery arrays json stringify


    【解决方案1】:

    在你parsed JSON之后你可以像这样使用map()

    var string = [{"RID":"98798","appName":"TestApp"},{"RID":"98799","appName":"TestApp Two"}];
    
    var result = string.map(function(e) {
      return e.RID += ' ' + e.appName;
    });
    
    console.log(result)

    或者使用 ES6 你可以这样做

    var string = [{"RID":"98798","appName":"TestApp"},{"RID":"98799","appName":"TestApp Two"}];
    
    var result = string.map(e => e.RID += ' ' + e.appName);
    console.log(result)

    【讨论】:

      【解决方案2】:

      您可以使用该数组并使用Array#map 构建一个新数组

      var array = [{ "RID": "98798", "appName": "TestApp" }, { "RID": "98799", "appName": "TestApp Two" }],
          result = array.map(function (a) {
              return a.RID + ' ' + a.appName;
          });
          
      console.log(result);

      【讨论】:

        【解决方案3】:

        此处的答案对您的示例有效,但这是任意属性数量和名称的解决方案。

        var flatObjects = [
                {"RID":"98798","appName":"TestApp"},
                {"RID":"98799","appName":"TestApp Two"},
                {"ABB":"98799","appMode":"Test", "feature": 2}
            ].map(function (obj) {
                var values = Object.keys(obj).map(function (key) { 
            	    return obj[key]
                })
                return values.join(' ')
            })
        
        var result = JSON.stringify(flatObjects)
        console.log(result)

        编辑:代码格式。

        【讨论】:

          【解决方案4】:

          这个答案也使用Array.prototype.map,但结合了ES6 destructuringarrow functionstemplate literals,以实现特别简洁的过程。

          var input = [
            {"RID":"98798","appName":"TestApp"},
            {"RID":"98799","appName":"TestApp Two"}
          ];
          
          var output = input.map(({RID, appName})=> `${RID} ${appName}`);
          
          console.log(output);
          
          // [
          //   "98798 TestApp",
          //   "98799 TestApp Two"
          // ]

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-05-21
            • 2021-05-12
            • 1970-01-01
            • 1970-01-01
            • 2016-07-16
            • 1970-01-01
            • 2013-08-29
            相关资源
            最近更新 更多