不使用JSON.stringify将数组转换为有效的JSON字符串?

我想写一个函数,接受一些对象,例如一个数字、一个字符串、一个列表或一个映射(键值对);并将输入的有效JSON表示为一个字符串。

我已经为简单的数字和字符串输入设置了其他的json编码器。

Input => Output 
a number with value 123 => 123 (string)
a string with value abc => "abc" (string)

但我在转换诸如[1, “2”,3]这样的数组时遇到了问题。

Input => Output 
1,2,three array => [1,2,"three"] (string) 

这是我目前的代码。

var my_json_encode = function(input) {

  if(typeof(input) === "string"){
      return '"'+input+'"'
  }
  if(typeof(input) === "number"){
      return `${input}`
  }

  //This is causing my issue
  if(Array.isArray(input)) {
      console.log(input)
  }

我可以简单地添加并返回JSON.stringify(input)来改变它,但我不想使用它。我知道我可以创建一些递归的解决方案,因为我已经为数字和字符串设置了基例。我在这个问题上受阻,任何帮助都将是感激的

编辑:所以解决方案,因为已经在下面的答案部分提供了! 谢谢 🙂

解决方案:

对于数组采取递归的方式处理项目。

const
    json_encode = (input) => {
        if (typeof input === "string") return `"${input}"`;
        if (typeof input === "number") return `${input}`;
        if (Array.isArray(input)) return `[${input.map(json_encode)}]`;
    };

console.log(json_encode([1, 'foo', [2, 3]]));
console.log(JSON.parse(json_encode([1, 'foo', [2, 3]])));

给TA打赏
共{{data.count}}人
人已打赏
未分类

事件总线 - 创建多个事件

2022-9-13 14:29:30

未分类

有什么方法可以用scandir循环文件夹?我面临一个问题,当循环使用

2022-9-13 14:40:22

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索