js字符串转json,存到数组里

string是:'{id:"item1",num:1},{id:"item2",num:2},{id:"item3",num:3}'【两边有单引号的】想做到将string... string是:'{id:"item1",num:1},{id:"item2",num:2},{id:"item3",num:3}'【两边有单引号的】想做到将string转为json存到数组里,酱:[{id:'item1',num:1},{id:'item2',num:2},{id:'item3',num:3}]尝试用(eval("(" + itemString + ")"))把string转为json再存数组,但数组里只有第三对,前两对不见了;想把两边引号当做字符串的一部分用slice删掉,但结果删不掉引号。我的思路是否有问题?怎么做合适 展开
 我来答
suxueduwang
2013-12-26 · TA获得超过654个赞
知道小有建树答主
回答量:209
采纳率:33%
帮助的人:235万
展开全部
 // 如果是你现在的提问,你的 string 是 '*****'
 <script type="text/javascript">
     window.onload = function(){
         var itemString = "'{id:\"item1\",num:1},{id:\"item2\",num:2}'";
         if(itemString.length>2){
             itemString = itemString.substring(1,itemString.length-1);
             itemString = eval('([' + itemString + '])');
             alert(itemString);
         }
     }
 </script>
 
 
 // 这是对于你第一个发的问题的,确保你的问题是正确的,那【两边有单引号】 
 // 也就是 var str = "'{ *** }'";
 <script type="text/javascript">
    window.onload = function() {
        // 假设你的 string 如你所给的,是 ‘{string}’
        var itemString = "‘{id:'item1',num:1,id:'item2',num:2,id:'item3',num:3}’";
        if (itemString.length > 4) {
            // 先把 ‘{}’两个给去掉,剩下 id:'',num:1, id:'',num:2 ***
            itemString = itemString.substring(2, itemString.length - 2);
            // 还要假设你的数据一定是规则的 id:'',num:1 每2个是一组,都是用 , 来分隔的 
            // 这样就切出来了 id:''  num:1  id;'' num:2 的数组
            var arrs = itemString.split(',');
            var arrlen = arrs.length;
            var result = "";
            for (var i = 0; i < arrlen; i = i + 2) { 
                // 如果 result 不为空,则是已经拼接过 { id:'',num:* } 了,再拼接一个则要加上 ,
                if (result != "") {
                    result += ",";
                }
                // 最终结果拼接为 { id:'',num:* } , { id:'',num:* }
                result += "{" + arrs[i] + "," + arrs[i + 1] + "}";
            }
            // 最后拼接总的字符串 [ + { id:'',num:* } , { id:'',num:* } + ]
            result = "[" + result + "]";
            alert(result);
        }
    }
</script>
追问
但我最后要的是个数组呀,不是拼出来的字符串。您的思路我倒是能看明白。
追答
如果是第一个问题的
alert(result); 之前加一句
result = eval('(' + result + ')');
alert(result);
就直接是 object 数组了

如果是第二个问题的,已经就是 object 数组了
zhaoapk
2013-12-26 · TA获得超过3771个赞
知道大有可为答主
回答量:1343
采纳率:40%
帮助的人:1590万
展开全部
var str = '{id:"item1",num:1},{id:"item2",num:2},{id:"item3",num:3}';
var arr = eval('([' + str + '])');
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
似怜杉33
2013-12-26 · TA获得超过141个赞
知道小有建树答主
回答量:173
采纳率:0%
帮助的人:121万
展开全部
var str = '['+'{id:"item1",num:1},{id:"item2",num:2},{id:"item3",num:3}'+']';var json = eval(str);alert(json[0].id); alert(json[1].num);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式