如何转义要用于JSON数据的特殊字符

时间:2012-06-07 18:00:01

标签: php javascript json

  `{\
     "wins\":[\"http://nintendos.t15.org/folder.dsos\",\"http://nintendos.t15.org
     /NintendOS%20Office/word.dsos?create=true\"
  ]}`

这是我使用PHP写入文件的JSON字符串。

我不关心哪种语言(JS或PHP),但是如何将数据(如“\ to”)转义为使用它?确切的代码如下:

function SaveSession(){
 try{
   if(user){
    var date=new Date();
    var month=date.getMonth()+1;
    var day=date.getDate();
    var year=date.getFullYear();
    var hour=date.getHours();
    var minutes=date.getMinutes();
    var seconds=date.getSeconds();
    if(minutes<10){
        minutes="0"+minutes;
    }
    if(seconds<10){
           seconds="0"+seconds;
    }
    dt=""+month+"/"+day+"/"+year+" "+hour+":"+minutes+":"+seconds+"";
    var session=new Object();
    session.wins=new Array();
    var pages=document.getElementsByClassName("page");
        if(pages[0]){
           session.wins.push(pages[0].getElementsByTagName("iframe")[0].src);
        }
        if(pages[1]){                            
                   session.wins.push(pages[1].getElementsByTagName("iframe")[0].src);
        }
        if(pages[2]){
                   session.wins.push(pages[2].getElementsByTagName("iframe")[0].src);
        }if(pages[3]){
                   session.wins.push(pages[3].getElementsByTagName("iframe")[0].src);
        }if(pages[4]){
           wins.push(pages[4].getElementsByTagName("iframe")[0].src);
        }if(pages[5]){
                   session.wins.push(pages[5].getElementsByTagName("iframe")[0].src);
        }if(pages[6]){
               session.wins.push(pages[6].getElementsByTagName("iframe")[0].src);
        }if(pages[7]){
               session.wins.push(pages[7].getElementsByTagName("iframe")[0].src);
        }if(pages[8]){
               session.wins.push(pages[8].getElementsByTagName("iframe")[0].src);
        }if(pages[9]){
               session.wins.push(pages[9].getElementsByTagName("iframe")[0].src);
        }
            ajaxObj.onreadystatechange=function(){
        if(ajaxObj.readyState>=4 && ajaxObj.status==200){
    }
    else{
    }
     }
     var sessionData=escape(JSON.stringify(session));
     ajaxObj.open("POST","req.php",true);
     ajaxObj.setRequestHeader("Content-type","application/x-www-form-urlencoded");
     ajaxObj.send("save_session=true&user="+username+"&session="+sessionData+"");
}
}
catch(err){
    alert("Error. Unable to save session. "+err+"");
}
 }

基本上,我想将JSON对象保存到文件中,如果我想再次使用它,我需要转义特殊字符。

2 个答案:

答案 0 :(得分:1)

尚未对其进行测试,但它可能有效:)

<?php 

str_replace('\"', '"', $jsonString);

?>

答案 1 :(得分:0)

实际上很简单。

<?php
    $a = array('x' => '"xyzhttp://test\escape');
    $b = json_encode($a); // {"x":"\"xyzhttp:\/\/test\\escape"}
    print_r(json_decode($b, true)); // Array ( [x] => "xyzhttp://test\escape ) 
?>

只需使用json_*功能。