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)

コメント

このブログの人気の投稿

windows10 で nvidia のグラボのcode43現象を解決した

Java : processbuilder 標準出力 タイムアウト

GTX560Ti がおかしい(code 43が出る)(2018年)→解決しました(2019)