【问题标题】:How to convert object to string without JSON.stringify using JavaScript?如何在没有 JSON.stringify 的情况下使用 JavaScript 将对象转换为字符串?
【发布时间】:2018-09-29 21:26:27
【问题描述】:

我通常不会这样做,但它是为了练习使用 JSON.stringify() 转换对象。要转换的对象如下:

obj = {
  num: 0,
  string: "string",
  func: function () {},
  emptyString: '',
  null: null,
  undefined: undefined
};

它应该产生下面的答案:

'{"num":0,"string":"This is a string","emptyString":"","null":null}'

【问题讨论】:

  • 周围有很多JSON.stringify polyfill。只需查看它们即可获得洞察力。
  • JSON.stringify 做了很多事情。您特别有哪些问题?请就您不了解的部分提出更具体的问题。

标签: javascript json object tostring


【解决方案1】:

当然你会一直想使用JSON.Stringify(),但是为了练习:

obj = {
  num: 0,
  string: "string",
  func: function () {},
  emptyString: '',
  null: null,
  undefined: undefined
};

str = Object
        .entries(obj)
        .reduce((a, e) => {
          if (typeof e[1] != "function") {
            a += `"${e[0]}" : "${e[1]}", `;
          }
          return a;
        }, "`{")
        .slice(1, -2) + "}`";

console.log(str)

【讨论】:

  • 这不会转义任何属性键或字符串值。
  • undefined"undefined" 不一样,[1, 2, 3] 也不行。
【解决方案2】:
    var str = Object
    .entries(input)
    .reduce((a, e) => {
      if (typeof e[1] != "function" && e[1] !== undefined) {
        if(e[0] === "num" || e[0] === "null"){
          a += `"${e[0]}":${e[1]},`;
        } else{
        a += `"${e[0]}":"${e[1]}",`;
      }
      }
      return a;
    }, "`{")
    .slice(1, -1) + "}";
return str;

能够通过上述方式得到它......尽管我确信有更好的答案。我了解到“polyfills”是我需要从用户 Bergi 那里搜索的。

感谢所有提供帮助的人

【讨论】:

    猜你喜欢
    • 2014-05-02
    • 2013-04-09
    • 1970-01-01
    • 2020-08-11
    • 1970-01-01
    • 1970-01-01
    • 2020-04-16
    • 2022-07-07
    • 2020-08-11
    相关资源
    最近更新 更多