¤³¤Î¥Ú¡¼¥¸¤òdel.icio.us¤ËÄɲà ¤³¤Î¥Ú¡¼¥¸¤ò¤Ï¤Æ¤Ê¥Ö¥Ã¥¯¥Þ¡¼¥¯¤ËÄɲ䳤Υڡ¼¥¸¤ò´Þ¤à¤Ï¤Æ¤Ê¥Ö¥Ã¥¯¥Þ¡¼¥¯ ¤³¤Î¥Ú¡¼¥¸¤òlivedoor ¥¯¥ê¥Ã¥×¤ËÄɲà ¤³¤Î¥Ú¡¼¥¸¤òYahoo!¥Ö¥Ã¥¯¥Þ¡¼¥¯¤ËÄɲ䳤Υڡ¼¥¸¤ò´Þ¤àYahoo!¥Ö¥Ã¥¯¥Þ¡¼¥¯

JSON¤ÎÊÑ¿ô̾¤ÈJava¥Õ¥£¡¼¥ë¥É̾¤¬°Û¤Ê¤ë¾ì¹ç¤Ë¥Þ¥Ã¥Ô¥ó¥°¤ò»ØÄꤹ¤ë

JSON/Json-lib¤ò»È¤¦/JSON¤«¤éJava¤Ø¤¤¤í¤ó¤ÊÊÑ´¹ ¤Î¥Ú¡¼¥¸¤Ç¡¢Json-lib¤òÍѤ¤¤ÆJSON¥ª¥Ö¥¸¥§¥¯¥È¤äJSONʸ»úÎ󤫤éJava¥ª¥Ö¥¸¥§¥¯¥È¤òÀ¸À®¤·¤Æ¤ß¤Þ¤·¤¿¡£

¤½¤ÎºÝ¤Ë¡¢JsonConfig?¥¯¥é¥¹¤òÍѤ¤¤ÆJava¥¯¥é¥¹¤Î¥Õ¥£¡¼¥ë¥É¤Ë¤¢¤ëList¤äSet¡¢¤Þ¤¿Map¤Ê¤É¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤É¤ó¤Ê¥¯¥é¥¹¤ò¥Þ¥Ã¥Ô¥ó¥°¤µ¤»¤ë¤«¤Ê¤É¤ò»ØÄê¤Ç¤­¤ë¤³¤È¤ò½ñ¤­¤Þ¤·¤¿¡£

¤µ¤Æ¡¢¤³¤ÎJsonConfig?¥¯¥é¥¹¤Ç¤¹¤¬¡¢Json-lib¤ÎÍÍ¡¹¤Êµóư¤òÀßÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤½¤ÎÁ°¤Ë¡¢¤½¤â¤½¤âJson-lib¤Ï¥Ç¥Õ¥©¥ë¥È¤Ç¤ÏJSONÆâ¤Î¥­¡¼ÃͤòJava¤ÎƱ¤¸Ì¾Á°¤Î¥Õ¥£¡¼¥ë¥É̾¤Ë¼«Æ°¤Ç¥Þ¥Ã¥Ô¥ó¥°¤¹¤ë¤è¤¦¤Ë¤Ç¤­¤Æ¤¤¤Þ¤¹¡£¶ñÂÎŪ¤Ë¤Ï

{"children":[{"name":"»Ò¤Î̾Á°"},{"name":"»Ò¤Î̾Á°2"}],"id":0,"name":"¿Æ¤Î̾Á°"} 

¤ËÂФ·¤Æ¡¢id¤äname¤ÏJava¥¯¥é¥¹¤Î¥Õ¥£¡¼¥ë¥É¤Îid¤äname¤È¤¤¤¦ÊÑ¿ô¤Ë¥Þ¥Ã¥Ô¥ó¥°¤·¤Þ¤¹¡£µÕ¤Ë¤¤¤¦¤È¥­¡¼ÃͤÈÊÑ¿ô̾¤¬°Û¤Ê¤ë¾ì¹ç¤ÏÅö¤¿¤êÁ°¤Ç¤¹¤¬¶õ¿¶¤ê¤·¤Æ¤·¤Þ¤¦¤ï¤±¤Ç¤¹¤Í¡£¤½¤ó¤Ê¤È¤­¤Ë¤ÏJsonConfig? ¤ÇÀßÄê¤òÊѹ¹¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢JSONÆâ¤ÎÃͤòǤ°Õ¤ÎÊÑ¿ô¤Ë¥Þ¥Ã¥Ô¥ó¥°¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

»î¤·¤Ë

{"children":[{"name":"»Ò¤Î̾Á°2"}],"id":0,"name_json":"¿Æ¤Î̾Á°"} 

¤ò

public class Parent {
  private String name;
  private int id;
  private Set children;
  
  public Set getChildren() {return children;}
  public void setChildren(Set children) {this.children = children;}
  public int getId() { return id;}
  public void setId(int id) { this.id = id;}
  public String getName() { return name;}
  public void setName(String name) { this.name = name;}
  public String toString() {
    return new ToStringBuilder(this).append("id", getId())
               .append("name",getName())
               .append("children", children).toString();
  }
}

¤Ø¥Þ¥Ã¥Ô¥ó¥°¤·¤Æ¤ß¤Þ¤¹¡£JSONʸ»úÎóÆâ¤Îname_json¤È¤¤¤¦¥­¡¼Ãͤò¡¢Java¥¯¥é¥¹¤Îname¥Õ¥£¡¼¥ë¥É¤Ë¥Þ¥Ã¥Ô¥ó¥°¤·¤Þ¤¹¡£

¤Þ¤º¤ÏÉáÄ̤ËJson-lib¤ò»ÈÍѤ¹¤ë¤È¡¢

public static void main(String[] args) {
  // {"children":[{"name":"»Ò¤Î̾Á°2"}],"id":0,"name_json":"¿Æ¤Î̾Á°"}
  // ¤«¤éJSONObject¤òºîÀ®¤·¤Þ¤¹
  String json = "{\"children\":[{\"name\":\"»Ò¤Î̾Á°2\"}],\"id\":0,\"name_json\":\"¿Æ¤Î̾Á°\"} ";
  System.out.println(json);
  JSONObject jsonObject = JSONObject.fromObject(json);
  System.out.println(jsonObject);
  JsonConfig jsonConfig = createConfig();
  Parent p = (Parent) JSONObject.toBean(jsonObject, jsonConfig);
  System.out.println(p);
}

private static JsonConfig createConfig() {
  JsonConfig jsonConfig = new JsonConfig();
  jsonConfig.setRootClass(Parent.class);
  Map<String, Class> classMap = new HashMap<String, Class>();
  classMap.put("children", Child.class);
  jsonConfig.setClassMap(classMap);
  return jsonConfig;
}

¼Â¹Ô·ë²Ì¤Ï°Ê²¼¤ÎÄ̤ꡣ

{"children":[{"name":"»Ò¤Î̾Á°2"}],"id":0,"name_json":"¿Æ¤Î̾Á°"}
Parent@ed32c4[id=0,name=<null>,children=[Child@719f1f[name=»Ò¤Î̾Á°2]]]

Åö¤¿¤êÁ°¤Ç¤¹¤¬Parent¥¯¥é¥¹¤Îname¥Õ¥£¡¼¥ë¥É¤Ï¥Þ¥Ã¥Ô¥ó¥°¤¬¶õ¿¶¤ê¤·¤Ænull¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£

¤Ç¤ÏJsonConfig?¤ËÀßÄê¤òÄɲ䷤Ƥߤޤ¹¡£¤ä¤êÊý¤Ï¡¢JSON¤ÎÊÑ¿ô̾¤ËÂФ·¤ÆJava¥Õ¥£¡¼¥ë¥É̾¤òÊÖ¤¹¥á¥½¥Ã¥É¤ò»ý¤Ã¤¿¥¯¥é¥¹ JavaIdentifierTransformer? ¤òÄêµÁ¤·¤ÆÀßÄꤷ¤Æ¤¢¤²¤ë¤À¤±¤Ç¤¹¤Í¡£

¼ÂºÝ¤Ë¤ä¤Ã¤Æ¤ß¤Þ¤¹¡£createConfig() ¤ÎÃæ¿È¤ò°Ê²¼¤Î¤è¤¦¤Ë½ñ¤­´¹¤¨¤Þ¤¹¡£

private static JsonConfig createConfig() {
  JsonConfig jsonConfig = new JsonConfig();
  jsonConfig.setRootClass(Parent.class);
  Map<String, Class> classMap = new HashMap<String, Class>();
  classMap.put("children", Child.class);
  jsonConfig.setClassMap(classMap);
  jsonConfig
    .setJavaIdentifierTransformer(new JavaIdentifierTransformer() {
    @Override
    public String transformToJavaIdentifier(String param) {
      if (param != null) {
        if ("name_json".equals(param)) { //json¤Îname_json¤ÏParent¥¯¥é¥¹¤Îname¤Ë¥Þ¥Ã¥Ô¥ó¥°
          return "name";
        }
      }
      return param;
    }
  });
  return jsonConfig;
}

¤³¤Î¤è¤¦¤Ë¥Þ¥Ã¥Ô¥ó¥°¤ò»Ø¼¨¤¹¤ë¥¯¥é¥¹¤òÄêµÁ¤·¡¢JsonConfig?¤ËÀßÄꤷ¤Æ¤ä¤ì¤Ð£Ï£Ë¤Ç¤¹¡£¼Â¹Ô·ë²Ì¤Ï°Ê²¼¤ÎÄ̤ꡣ

{"children":[{"name":"»Ò¤Î̾Á°2"}],"id":0,"name_json":"¿Æ¤Î̾Á°"}
Parent@caf0ed[id=0,name=¿Æ¤Î̾Á°,children=[Child@719f1f[name=»Ò¤Î̾Á°2]]]

name¥Õ¥£¡¼¥ë¥É¤ËÁÛÄêÄ̤êÃͤ¬ÀßÄꤵ¤ì¤Þ¤·¤¿¡£

´ØÏ¢¥ê¥ó¥¯


¤³¤Îµ­»ö¤Ï

ÁªÂò»è Åêɼ
¤ª¤â¤·¤í¤«¤Ã¤¿ 1  
¤½¤¦¤Ç¤â¤Ê¤¤ 0  

¤³¤Î¥Ú¡¼¥¸¤òdel.icio.us¤ËÄɲà ¤³¤Î¥Ú¡¼¥¸¤ò¤Ï¤Æ¤Ê¥Ö¥Ã¥¯¥Þ¡¼¥¯¤ËÄɲ䳤Υڡ¼¥¸¤ò´Þ¤à¤Ï¤Æ¤Ê¥Ö¥Ã¥¯¥Þ¡¼¥¯ ¤³¤Î¥Ú¡¼¥¸¤òlivedoor ¥¯¥ê¥Ã¥×¤ËÄɲà ¤³¤Î¥Ú¡¼¥¸¤òYahoo!¥Ö¥Ã¥¯¥Þ¡¼¥¯¤ËÄɲ䳤Υڡ¼¥¸¤ò´Þ¤àYahoo!¥Ö¥Ã¥¯¥Þ¡¼¥¯

¸½ºß¤Î¥¢¥¯¥»¥¹:1470


¥È¥Ã¥×   ÊÔ½¸ Åà·ë º¹Ê¬ ¥Ð¥Ã¥¯¥¢¥Ã¥× źÉÕ Ê£À½ ̾Á°Êѹ¹ ¥ê¥í¡¼¥É   ¿·µ¬ °ìÍ÷ ñ¸ì¸¡º÷ ºÇ½ª¹¹¿·   ¥Ø¥ë¥×   ºÇ½ª¹¹¿·¤ÎRSS
Last-modified: 2009-06-04 (ÌÚ) 15:25:32 (279d)