「IO.Serialize() の JSON を参照する」の版間の差分

Sukemaru (トーク | 投稿記録)
ページを新規作成
 
MSY-07 (トーク | 投稿記録)
空行の除去
 
(2人の利用者による、間の4版が非表示)
4行目: 4行目:
include/IO.js をインクルードしているマクロで使用可。
include/IO.js をインクルードしているマクロで使用可。


[[ファイル:Mery 関数 JsonContents.png|link=]]
''ref.'' 導入事例として「[[検索ジャンプの include版|ポップアップメニューで検索先にジャンプ]]」「[[ブックマーク一覧ジャンプ#include版|ブックマーク一覧ジャンプ]]」マクロの sukemaru 版(include 版)<br>
※ 複数の設定項目(変数)をポップアップメニュー内から変更、JSON の参照・初期化などができるようになっています。


== 使い方 ==
== 使い方 ==
 
IO.Serialize() での '''JSON ファイル名(ベース名)の既定値'''は
IO.Serialize() での JSON ファイル名(ベース名)の既定値は
<syntaxhighlight lang="javascript">
<source lang="javascript">
#include "include/IO.js"
#include "include/IO.js"


19行目: 19行目:


// IO.Seialize( object, jsonName ); // object は任意のオブジェクト
// IO.Seialize( object, jsonName ); // object は任意のオブジェクト
</source>
</syntaxhighlight>
 
※ IO.Seialize() で第二引数を省略した場合は、関数側で定義された既定値 ScriptName.replace( /\.js$/i, "" ) が JSON ファイル名になる(マクロの JS ファイルのベース名と同一になる)。<br> イベントマクロで IO.Seialize() を使用する場合は、ScriptName を使わず、任意の文字列を指定すること。


;保存先のフォルダパスは JsonDir() 関数で取得する
;保存先のフォルダパスは JsonDir() 関数で取得する
<source lang="javascript">
<syntaxhighlight lang="javascript">
var jsonDir = JsonDir();
var jsonDir = JsonDir();


Alert( "jsonDir:\n\n" + jsonDir );
Alert( "jsonDir:\n\n" + jsonDir );
</source>
</syntaxhighlight>
 


;JSON ファイルのフルパスは
;JSON ファイルのフルパスは
<source lang="javascript">
<syntaxhighlight lang="javascript">
var jsonPath = jsonDir + "\\" + jsonName + ".json";
var jsonPath = jsonDir + "\\" + jsonName + ".json";
// または
// または
37行目: 36行目:


Alert( "jsonPath:\n\n"" + jsonPath );
Alert( "jsonPath:\n\n"" + jsonPath );
</source>
</syntaxhighlight>
 


;JSON の内容を確認ダイアログに表示してから JSON ファイルを開く
;JSON の内容を確認ダイアログに表示してから JSON ファイルを開く
<source lang="javascript">
<syntaxhighlight lang="javascript">
// 開く前に最新の状態に JSON を更新するなら関数コード内の object は任意のものに変更すること
// 開く前に最新の状態に JSON を更新するなら関数コード内の object は任意のものに変更すること
OpenJson( jsonName ); // 引数は JSON のファイル名(ベース名)
OpenJson( jsonName ); // 引数は JSON のファイル名(ベース名)
</source>
</syntaxhighlight>


[[ファイル:Mery 関数 JsonContents.png|link=]]
<br clear=all>
※ JSON では「キー」(オブジェクトのプロパティ名)の側にも '''"'''ダブルクオート'''"''' が付く。


== 組み込み関数 JsonDir() ==
== 組み込み関数 JsonDir() ==
<source lang="javascript">
<syntaxhighlight lang="javascript">
/**  
/**  
  * 関数 JsonDir()
  * 関数 JsonDir()
70行目: 71行目:
   return jsonDir;
   return jsonDir;
}
}
</source>
</syntaxhighlight>
 


== 組み込み関数 OpenJson() ==
== 組み込み関数 OpenJson() ==
OpenJson() を使用するには JsonDir() と JsonContents() も必要。<br>
JSON.stringify() だと Windows XP では使えないので、整形は簡易的な置換処理(ダイアログ窓のコンソールフォントでの読みやすさを優先して{}を全角にする。入れ子になった要素の字下げ数を考慮しない)。


OpenJson() を使用するには JsonDir() と JsonContents() も必要
<syntaxhighlight lang="javascript">
<source lang="javascript">
/**
/**
  * 関数 OpenJson( jsonName )
  * 関数 OpenJson( jsonName )
120行目: 121行目:
   var contents = ( jsonPath + "  \n"
   var contents = ( jsonPath + "  \n"
   + IO.LoadFromFile( jsonPath )
   + IO.LoadFromFile( jsonPath )
     .replace( /^\{/, "\n{\n  " )
     .replace( /^\{/, "\n{\n    " )
     .replace( /\}$/g, "\n}\n\n" )
     .replace( /\}$/g, "\n}\n\n" )
     .replace( /,/g, " ,\n  " )
     .replace( /,/g, " ,\n    " )
     .replace( /\":/g, "\": " )
     .replace( /\":/g, "\": " )
   );
   );
   if ( bool ) {
   if ( bool ) {
143行目: 144行目:
   }
   }
}
}
</source>
</syntaxhighlight>
スポンサーリンク