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¥Õ¥£¡¼¥ë¥É¤ËÁÛÄêÄ̤êÃͤ¬ÀßÄꤵ¤ì¤Þ¤·¤¿¡£ ´ØÏ¢¥ê¥ó¥¯ †¤³¤Îµ»ö¤Ï ¸½ºß¤Î¥¢¥¯¥»¥¹:1470 |