【问题标题】:How to convert a javascript map of array into a json object in javascript?如何将数组的javascript映射转换为javascript中的json对象?
【发布时间】:2017-04-23 06:05:31
【问题描述】:

我有一个 javascript MAP 对象,它将键作为字符串保存,将值保存为 javascript 数组,每个数组都在其中保存一组字符串。我想将数组映射转换为 javascript 中的 json 对象。

这是我尝试过的代码

函数 addRole() {

 var jsonObjectOfMap={};
    subMenuSelectedIdMap.forEach(function(items,key,subMenuSelectedIdMap){
        jsonObjectOfMap[key]=JSON.stringify(items);
    }); 
    alert(JSON.stringify(jsonObjectOfMap));

我得到这样的 json 对象 {"1004":"[1005,1006,1023]","1007":"[1008,1053]"}

但是这个 json 格式对象是否有效,如果我想要它的格式,我必须做什么: {"1004":["1005","1006","1023"]","1007":["1008","1053"]}

请帮帮我

【问题讨论】:

  • jsonObjectOfMap[key]=items;JSON.stringify() 不需要在每个单独的对象上调用。通常只需要在根对象上调用一次 - JSON.stringify(jsonObjectOfMap)。它已经以递归方式运行,并将对其中包含的任何(兼容)值进行字符串化。
  • 我试过这种方式,但它给了我这样的结果:{"1004":[1005,1006,1023],"1007":[1008,1053]}
  • 你能给我们看看 JSON 文件吗?

标签: javascript arrays json jsp


【解决方案1】:

如果最里面的值都是数字,并且您希望它们作为最终结果中的字符串,则必须将每个数字单独转换为字符串。

您可以使用.map() 对每个items 进行另一个循环,并为每个号码调用String().toString()

subMenuSelectedIdMap.forEach(function (items, key, subMenuSelectedIdMap){
    jsonObjectOfMap[key] = items.map(function (item) {
        return String(item); // or `return item.toString();`
    });
});

可选地,由于String() 只承认一个参数(.map() 传递的另外两个被忽略),items 上的循环可以缩短为:

jsonObjectOfMap[key] = items.map(String);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-03
    • 1970-01-01
    • 2013-01-09
    • 1970-01-01
    • 2020-04-26
    • 2021-05-02
    • 2021-04-23
    相关资源
    最近更新 更多