JSON/Json-libを使う/TIPS集
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
#contents
**JSONの変数名とJavaフィールド名が異なる場合にマッピング...
[[JSON/Json-libを使う/JSONからJavaへいろんな変換]] のペー...
その際に、JsonConfigクラスを用いてJavaクラスのフィールド...
さて、このJsonConfigクラスですが、Json-libの様々な挙動を...
{"children":[{"name":"子の名前"},{"name":"子の名前2"}],"...
に対して、idやnameはJavaクラスのフィールドのidやnameとい...
試しに
{"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 =...
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というキー...
まずは普通にJson-libを使用すると、
public static void main(String[] args) {
// {"children":[{"name":"子の名前2"}],"id":0,"name_jso...
// からJSONObjectを作成します
String json = "{\"children\":[{\"name\":\"子の名前2\"}...
System.out.println(json);
JSONObject jsonObject = JSONObject.fromObject(json);
System.out.println(jsonObject);
JsonConfig jsonConfig = createConfig();
Parent p = (Parent) JSONObject.toBean(jsonObject, json...
System.out.println(p);
}
private static JsonConfig createConfig() {
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setRootClass(Parent.class);
Map<String, Class> classMap = new HashMap<String, Clas...
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[na...
当たり前ですがParentクラスのnameフィールドはマッピングが...
ではJsonConfigに設定を追加してみます。やり方は、JSONの変...
実際にやってみます。createConfig() の中身を以下のように書...
private static JsonConfig createConfig() {
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setRootClass(Parent.class);
Map<String, Class> classMap = new HashMap<String, Clas...
classMap.put("children", Child.class);
jsonConfig.setClassMap(classMap);
jsonConfig
.setJavaIdentifierTransformer(new JavaIdentifierTran...
@Override
public String transformToJavaIdentifier(String param...
if (param != null) {
if ("name_json".equals(param)) { //jsonのname_js...
return "name";
}
}
return param;
}
});
return jsonConfig;
}
このようにマッピングを指示するクラスを定義し、JsonConfig...
{"children":[{"name":"子の名前2"}],"id":0,"name_json":"...
Parent@caf0ed[id=0,name=親の名前,children=[Child@719f1f[...
nameフィールドに想定通り値が設定されました。
***関連リンク [#ea61ac52]
-[[JSON/Json-libを使う/JSONからJavaへいろんな変換]]
-[[Listなどの中のオブジェクトの型を指定する>JSON/Json-lib...
----
この記事は
#vote(おもしろかった[4],そうでもない[0])
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}
終了行:
// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
#contents
**JSONの変数名とJavaフィールド名が異なる場合にマッピング...
[[JSON/Json-libを使う/JSONからJavaへいろんな変換]] のペー...
その際に、JsonConfigクラスを用いてJavaクラスのフィールド...
さて、このJsonConfigクラスですが、Json-libの様々な挙動を...
{"children":[{"name":"子の名前"},{"name":"子の名前2"}],"...
に対して、idやnameはJavaクラスのフィールドのidやnameとい...
試しに
{"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 =...
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というキー...
まずは普通にJson-libを使用すると、
public static void main(String[] args) {
// {"children":[{"name":"子の名前2"}],"id":0,"name_jso...
// からJSONObjectを作成します
String json = "{\"children\":[{\"name\":\"子の名前2\"}...
System.out.println(json);
JSONObject jsonObject = JSONObject.fromObject(json);
System.out.println(jsonObject);
JsonConfig jsonConfig = createConfig();
Parent p = (Parent) JSONObject.toBean(jsonObject, json...
System.out.println(p);
}
private static JsonConfig createConfig() {
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setRootClass(Parent.class);
Map<String, Class> classMap = new HashMap<String, Clas...
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[na...
当たり前ですがParentクラスのnameフィールドはマッピングが...
ではJsonConfigに設定を追加してみます。やり方は、JSONの変...
実際にやってみます。createConfig() の中身を以下のように書...
private static JsonConfig createConfig() {
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setRootClass(Parent.class);
Map<String, Class> classMap = new HashMap<String, Clas...
classMap.put("children", Child.class);
jsonConfig.setClassMap(classMap);
jsonConfig
.setJavaIdentifierTransformer(new JavaIdentifierTran...
@Override
public String transformToJavaIdentifier(String param...
if (param != null) {
if ("name_json".equals(param)) { //jsonのname_js...
return "name";
}
}
return param;
}
});
return jsonConfig;
}
このようにマッピングを指示するクラスを定義し、JsonConfig...
{"children":[{"name":"子の名前2"}],"id":0,"name_json":"...
Parent@caf0ed[id=0,name=親の名前,children=[Child@719f1f[...
nameフィールドに想定通り値が設定されました。
***関連リンク [#ea61ac52]
-[[JSON/Json-libを使う/JSONからJavaへいろんな変換]]
-[[Listなどの中のオブジェクトの型を指定する>JSON/Json-lib...
----
この記事は
#vote(おもしろかった[4],そうでもない[0])
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}
ページ名: