【问题标题】:Convert plain text into object将纯文本转换为对象
【发布时间】:2017-08-19 21:21:31
【问题描述】:

我有非普通格式的数据const variations

const variations = {
  0: "{"productPriceLocal": "16990.00", "productId": "30028132"}",
  1: "{"productPriceLocal": "22990.00", "productId": "30028233"}"
};

// this code doesn't work
// console.log(_.map(variations, 'productId'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.js"></script>

我希望它转换为像这样的普通 JS 对象,我可以正常工作

const object = {
  0: {
    productId: 30028132,
    ...
  },
  ...
}

我尝试使用 lodash,效果不佳。有谁知道,我该怎么办?

【问题讨论】:

  • "{"productPriceLocal": "16990.00", "productId": "30028132"}",这不是一个有效的字符串或对象
  • 使用 JSON.parse() 就像这里解释的那样:w3schools.com/js/js_json_parse.asp

标签: javascript arrays object lodash


【解决方案1】:

您遇到的第一个问题是"{"productPriceLocal": "16990.00", "productId": "30028132"}" 包含未转义的引号,这些引号会在您想要它之前终止字符串(导致错误)。因此,如果您使用单引号包含该字符串,则应该解决您的第一个问题。

然后按如下方式解析 JSON 对象应该会产生您正在寻找的输出,没有 lodash nessecary。

const variations = {
  0: '{"productPriceLocal": "16990.00", "productId": "30028132"}',
  1: '{"productPriceLocal": "22990.00", "productId": "30028233"}'
};

var output = {};

for(key in variations) {
  output[key] = JSON.parse(variations[key]);
}

console.log(output);

【讨论】:

    【解决方案2】:

    您可以使用 Array reduceObject.keys 方法将您的对象映射到您想要的类型的单个对象。

    //Make sure you escape the quotes in your JSON strings.
    const variations = {
          0: "{\"productPriceLocal\": \"16990.00\", \"productId\": \"30028132\"}",
          1: "{\"productPriceLocal\": \"22990.00\", \"productId\": \"30028233\"}"
        };
    
    let parsedValues = Object.keys(variations) // Get keys as an array [0,1] 
      .reduce((obj, key) => { 
             // parse to an object.
             obj[key] = JSON.parse(variations[key]); 
             return obj; 
      }, {} /* initialization object */);
    console.log(parsedValues);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-12
      • 2012-04-12
      • 2014-09-08
      • 2020-08-27
      • 2010-11-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多