投稿

ラベル(JavaScript)が付いた投稿を表示しています

Java : [標準API]Map<String,Object>型を JSONパース可能な1行のString型に変換。

標準APIのみで、Map<String,Object>(最終的にはMap<String,String>)を、JSONのパースが可能な1行の文字列に変換する再帰関数。 Java1.8。 以下コード。 /** * Map 型をJSONパース前のString平坦文に変更。 * @param map : Map<String,Object>型で定義されている。終端の要素はMap<String,String>であってほしい。 * @return 引数 map をString型に変換した状態。 */ @SuppressWarnings("unchecked") private String mapToString(Map<String, Object> map) { String sss = "{"; for (Entry<String, Object> e : map.entrySet()) { if ( e.getValue() instanceof Map ) { sss += "\"" + e.getKey() + "\":"; sss += mapToString((Map<String, Object>)e.getValue()); sss = sss.substring(0, sss.length() - 1) + "},"; } else { sss += "\"" + e.getKey() + "\":\"" + e.getValue() + "\","; } } return sss.substring(0, sss.length() - 1) + "}"; } こういう状況なら、JavaScrirptで以下のような取扱いが可能。 var j = JSON.parse(sss)

JavaScript : 自分のWebコンテンツ配下のローカルファイルを読み込む

今どきの色々なライブラリを使えないような状況で、 どうしてもローカルファイルを読み込む必要があるときのJavaScriptコードです。 XMLHttpRequest を使用して読み込みましょう。 Chrome、Firefox、IEで共通です。 *Webコンテンツ外のC:ドライブのどこか~などを指定するわけではありません。 ■準備 例えばこんなディレクトリ構成だったとして。 WebContent css data target.json img js jsp WEB-INF classes ... ■コード例 下記例ではjsonファイルを読み込んで、関数内でパースします。 // JSONファイルの読み込み。 function readJSON(){ var f = "data/target.json"; var retJson; var obj = new XMLHttpRequest(); obj.open( 'get', f, false ); //ファイルオープン : 同期モード obj.onload = function() { try { retJson = JSON.parse(this.responseText); //JSON型でパース。 } catch (e) { alert("コマンド定義ファイルの読み込み、解析に失敗しました。"); } } obj.send(null); //ここで読込実行。 return retJson; } ちなみに、WebContent外のファイルは流石に読み込めないと思います。