`{\
"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 オブジェクトをファイルに保存したいのですが、再度使用する場合は特殊文字をエスケープする必要があります。