JacksonでJSON文字列を作ってみる
{
"Age":37,
"FamilyFirstNames":["Kamisan","Musume","Musuko"],
"Cats":[{"name":"coco","age":3},{"name":"choco","age":2}],
"FirstName":"Masahide",
"LastName":"Takeda"
}
が出力されるサンプル。
MapだろうがListだろうがJavaBeanだろうが意識しないで渡してしまえば
処理してくれる。Jackson便利。
package jp.npinc.jackson.sample; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.codehaus.jackson.JsonGenerationException; import org.codehaus.jackson.map.JsonMappingException; import org.codehaus.jackson.map.ObjectMapper; /** * JACKSONのJSON生成サンプルクラス * * @author bose999 * */ public class JSONMaker { /** * サンプル実行メソッド * Mapに値をセットして、そこからJSONを柔軟に生成する * * @param args String */ public static void main(String args[]){ Map<String,Object> valueMap = new HashMap<String,Object>(); setValueMap(valueMap); String jsonString = makeJSONString(valueMap); System.out.println(jsonString); } /** * Mapに値をセットする * * @param valueMap Map<String, Object> */ private static void setValueMap(Map<String, Object> valueMap) { valueMap.put("FirstName", "Masahide"); valueMap.put("LastName", "Takeda"); valueMap.put("Age", Integer.valueOf(37)); List<String> familyFirstNames = new ArrayList<String>(); familyFirstNames.add("Kamisan"); familyFirstNames.add("Musume"); familyFirstNames.add("Musuko"); valueMap.put("FamilyFirstNames", familyFirstNames); List<Cat> cats = new ArrayList<Cat>(); Cat cat = new Cat(); cat.name = "coco"; cat.age = 3; cats.add(cat); cat = new Cat(); cat.name = "choco"; cat.age = 2; cats.add(cat); valueMap.put("Cats", cats); } /** * MapからJSON文字列を作成する * * @param valueMap Map<String, Object> * @return String */ private static String makeJSONString(Map<String,Object> valueMap){ ObjectMapper objectMapper = new ObjectMapper(); String jsonString = null; try { jsonString = objectMapper.writeValueAsString(valueMap); } catch (JsonGenerationException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return jsonString; } /** * 猫クラスだにゃ * * @author bose999 * */ static class Cat{ public String name; public Integer age; } }