Skip to content

Instantly share code, notes, and snippets.

@namarium namarium/JSONParser.bat
Last active Sep 13, 2018

Embed
What would you like to do?
WSH JScript JSONファイルを使用する
@if(0)==(0) echo off
title %~n0
%windir%\System32\cscript.exe //nologo //E:JScript "%~f0" %*
echo;&echo;&pause&goto:EOF
@end
//! @file JSONParser.bat
//! @version 1.00r1
/**
* @brief エントリーポイント用即時関数
*/
WSH.Quit(function ()
{
// 初期化
var jsonFilePath = ".\\sample.json";
var savePath = ".\\output.json";
var parser = GetJSONParser(jsonFilePath);
var fso = parser.GetFileSystem();
if (!fso.FileExists(jsonFilePath)) {
WSH.Echo("ファイルが見つかりません。");
return -1;
}
// 解析
try {
var conf = parser.Parse(jsonFilePath);
}
catch(e){
WSH.Echo("解析に失敗しました。\n" + e);
return -2;
}
// 読み込み
WSH.Echo(conf.Date.Year);
WSH.Echo(conf.Date.Date);
WSH.Echo(conf.Date.Time);
for (var idx = 0; idx < conf.Users.length; idx++) {
WSH.Echo("----------------");
var user = conf.Users[idx];
WSH.Echo(user.Country);
WSH.Echo(user.Name);
WSH.Echo(user.Age);
}
// 保存
// ユーザー情報だけ、保存
parser.Save(savePath, conf.Users);
return 0;
}());
/*
* @brief JSONParser 取得
* @return JSONParser オブジェクト
* @note
* JSON Object (Windows Scripting - JScript)
* https://msdn.microsoft.com/en-us/library/cc836458(v=vs.84).aspx
*/
function GetJSONParser() {
return new((function () {
// コンストラクタ
var JSONParser = function () {
this.fso = WSH.CreateObject("Scripting.FileSystemObject");
var htmlfile = WSH.CreateObject("htmlfile");
htmlfile.write('<meta http-equiv="x-ua-compatible" content="IE=9"/>');
htmlfile.close(this.parser = htmlfile.parentWindow.JSON);
}
// アクセサ
var p = JSONParser.prototype;
p.GetFileSystem = function () {return this.fso;}
/**
* @brief 解析
* @param[in] path jsonファイルのパス
* @return 解析結果
*/
p.Parse = function (path) {
var jsonFile = this.fso.OpenTextFile(path, 1, true);
var jsonText = jsonFile.ReadAll();
jsonFile.Close();
return this.parser.parse(jsonText);
}
/**
* @brief 保存
* @param[in] path 保存先のパス
* @param[in] obj 保存するデータ
*/
p.Save = function (path, obj) {
var jsonFile = this.fso.OpenTextFile(path, 2, true, -2);
jsonFile.Write(this.parser.stringify(obj));
jsonFile.Close();
}
return JSONParser;
})())();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.