WSH,JScriptでは、標準でJSONを使用する事が出来ません。
検索すればライブラリやhtmlfileからJSONを使用する方法がみつかるかと思います。
読み込み関連はほぼ問題ないのですが、文字列化する際にhtmlfileを使用して困ったのでメモとして残します。
JSONを使用する方法
json3.jsを使用する
ライブラリなので簡単に使用可能です。
下記から json3.js をダウンロードし読み込めば、使用可能です。ここでは説明を省きます。
https://github.com/bestiejs/json3
htmlfileを使用する
JSONを読み込む際は、ライブラリをダウンロードしてくるのが面倒なので
昔からこの方法で行っていました。
var JSON = (function(){
var htmlfile = new ActiveXObject('htmlfile');
htmlfile.write('<meta http-equiv="x-ua-compatible" content="IE=11" />');
return htmlfile.parentWindow.JSON;
})();
JSON.stringify() の違い
以下のオブジェクトをJSONとして出力したいと思います。
var sample = {
"name" : "tarou",
"item" : [
"sword",
"shield"
]
};
var jsonString = JSON.stringify(sample, undefined, " ");
WScript.Echo(jsonString);
json3.js版の出力結果
{
"name": "tarou",
"item": [
"sword",
"shield"
]
}
どこにも違和感はありません。「そうだね。」という感じです。
htmlfileのJSON版の出力結果
{
"name": "tarou",
"item": {
"0": "sword",
"1": "shield",
"length": 2
},
"constructor": {}
}
htmlfileのJSONでは、配列が添え字とともにオブジェクトとして出力されてしまいました。
以下のように、直接オブジェクトを渡しても同様です。
var jsonString = JSON.stringify({"name":"jiro","item":["axe"]}, undefined, " ");
JSONファイルを出力する
ここまで書いておいて出力部分の説明は割愛します。
FileSystemObjectを利用し、テキストファイルとして出力すればOKです。
json3.jsとhtmlfileの使い分け
読み込みだけであれば、htmlfileを使う方が簡単です。
出力を行う際は、json3.js等のライブラリを使用した方が手っ取り早いです。