オールドスクールな infogami スタイルの SITEINFO から JSON を、
javascript: (function(){ var result = document.evaluate('//textarea[@class="autopagerize_data"]',document, null, 7, null); var array = []; for (var i = 0, l = result.snapshotLength; i < l; i ++) { var data = result.snapshotItem(i).value; var json = '({' + data.replace(/\s*$/, '').replace(/\\/g, '\\\\').replace(/'/g, '\\\'').replace(/$/mg, '\'').replace(/(^\w+:)\s*/mg, '$1\'').split(/\n/).join(',') + '})'; array.push(json); } /*try { eval('[' + array.join(',') + ']'); alert('ok'); } catch(e) { alert('ng') }*/ var t=document.createElement('textarea'); document.body.insertBefore(t, document.body.firstChild); var s=t.style; s.padding='0'; s.margin='auto 0'; s.border='solid 1em gray'; s.width='90%'; s.height='20em'; t.value='[' + array.join(',') + ']'; } )();http://d.hatena.ne.jp/amachang/20071019/1192764800
中身はだいたいこんな感じになってます。
// XPath で textarea 取得 var result = document.evaluate('//textarea[@class="autopagerize_data"]', document, null, 7, null); // それぞれをJSON 化 var array = []; for (var i = 0, l = result.snapshotLength; i < l; i ++) { var data = result.snapshotItem(i).value; var json = '({' + data.replace(/\s*$/, '').replace(/\\/g, '\\\\').replace(/'/g, '\\\'').replace(/$/mg, '\'').replace(/(^\w+:)\s*/mg, '$1\'').split(/\n/).join(',') + '})'; array.push(json); } /*try { eval('[' + array.join(',') + ']'); alert('ok'); } catch(e) { alert('ng') }*/ // DEBUG // 結合 console.log('[' + array.join(',') + ']'); // JSONhttp://d.hatena.ne.jp/amachang/20071019/1192764800