HiiHahWIKI - making some notes for... -
Java:JacksonをつかってJSONを読み込む
をテンプレートにして作成
開始行:
*Java:JacksonをつかってJSONを読み込む [#rdc759dc]
JacksonをつかってJSONを読み込むサンプルです。
なんか、JSONを読み込むサンプルを見ると、結構StreamingAPI...
なので、Databindingの「Simple data binding」のサンプルを...
***準備 [#y6dcb9ad]
ここからJarファイルをDLしてクラスパスに追加です。
-JacksonのDLページ&br;http://wiki.fasterxml.com/JacksonDo...
***はじめてのJackson [#vaaacd4b]
Jacksonの「Simple data binding」は簡単です。
基本的にはこれだけ。
// Jacksonのマッパーを生成。
ObjectMapper mapper = new ObjectMapper();
// JSON(オブジェクト)
String jsondata = "{\"a\":1,\"b\":2}";
Map<String,Integer> result = mapper.readValue(jsondata, ...
System.out.println("result1.toString() : " + result.toSt...
出力はこんな感じ。
result1.toString() : {a=1, b=2}
使い方としては、大体のJSONの第一階層はMap型にマップできる...
***リストで始まるJSONを読み込む [#f475ba6a]
じゃあ、リストの場合は以下のとおり。
// リスト
jsondata = "[1,2]";
List<Integer> result2 = mapper.readValue(jsondata, List....
System.out.println("result2.toString() : " + result2.toS...
出力はこんな感じ
result2.toString() : [1, 2]
まあ、簡単ですなw
***ネストしたリストのJSONを読み込む [#w981d1e3]
こんな感じです。
// ネストしたリスト
jsondata = "[[\"1111\",\"aaaa\"],[\"2222\",\"bbbb\"]]";
List<List<String>> result3 = mapper.readValue(jsondata, ...
System.out.println("result3.toString() : " + result3.toS...
3行目がちょっと入れ子になりました。
出力はこんな感じ
result3.toString() : [[1111, aaaa], [2222, bbbb]]
***マップにリストがネストしたJSONを読み込む [#ec21da2e]
JSONだんだん構造が複雑になってきました。
// オブジェクトの中にリストが含まれているパターン
jsondata = "{\"a\":1,\"b\":2,\"c\":[\"xxxx\",\"yyyy\"]}";
Map<String,Object> result4 = mapper.readValue(jsondata, ...
System.out.println("result4.toString() : " + result4.toS...
System.out.println("result4.a : " + result4.get("a")....
System.out.println("result4.b : " + result4.get("b")....
System.out.println("result4.c[0] : " + result4.get("c")....
System.out.println("result4.c[1] : " + ((List)result4.ge...
System.out.println("result4.c : " + ((List)result4.get("...
出力はこんな感じ
result4.a : class java.lang.Integer:1
result4.b : class java.lang.Integer:2
result4.c[0] : class java.util.ArrayList:[xxxx, yyyy]
result4.c[1] : class java.lang.String:xxxx
result4.c : class java.lang.String:yyyy
これよりも複雑なJSONを読み込むようであれば、再帰処理でMap...
***参考サイト [#pfa0eff6]
-JSON公式サイト?w&br;http://www.json.org/json-ja.html
-Jackson公式サイト&br;http://jackson.codehaus.org/
-JacksonのDLページ&br;http://wiki.fasterxml.com/JacksonDo...
-JacksonのTutorial&br;http://wiki.fasterxml.com/JacksonIn...
-JacksonのDatabindingのページ&br;http://wiki.fasterxml.co...
-Jacksonのjavadoc&br;http://wiki.fasterxml.com/JacksonJav...
-技評のJacksonのStreamingAPIの記事&br;http://gihyo.jp/dev...
***以下、個人メモ : Mapの要素を巡回したい [#ja1c39a9]
Mapの要素を巡回したい場合。
keySet()メソッドでキーのセットがとれて、これが拡張forルー...
jsondata = "{\"a\":1,\"b\":2,\"c\":[\"xxxx\",\"yyyy\"],\...
Map<String,Object> result5 = mapper.readValue(jsondata, ...
for (String key : result5.keySet()){
if (result5.get(key) instanceof Map) {
System.out.println("result4.get(\""+key+"\") instanceo...
}else if (result5.get(key) instanceof List){
System.out.println("result4.get(\""+key+"\") instanceo...
}
}
出力はこんな感じ。
result4.get("c") instanceof List
result4.get("d") instanceof Map
※個別の値を出力するのは面倒だったので割愛。
-http://docs.oracle.com/javase/jp/6/api/
-http://docs.oracle.com/javase/jp/6/api/java/util/Set.html
SetがIteratorインターフェースを実装しているんだねw
終了行:
*Java:JacksonをつかってJSONを読み込む [#rdc759dc]
JacksonをつかってJSONを読み込むサンプルです。
なんか、JSONを読み込むサンプルを見ると、結構StreamingAPI...
なので、Databindingの「Simple data binding」のサンプルを...
***準備 [#y6dcb9ad]
ここからJarファイルをDLしてクラスパスに追加です。
-JacksonのDLページ&br;http://wiki.fasterxml.com/JacksonDo...
***はじめてのJackson [#vaaacd4b]
Jacksonの「Simple data binding」は簡単です。
基本的にはこれだけ。
// Jacksonのマッパーを生成。
ObjectMapper mapper = new ObjectMapper();
// JSON(オブジェクト)
String jsondata = "{\"a\":1,\"b\":2}";
Map<String,Integer> result = mapper.readValue(jsondata, ...
System.out.println("result1.toString() : " + result.toSt...
出力はこんな感じ。
result1.toString() : {a=1, b=2}
使い方としては、大体のJSONの第一階層はMap型にマップできる...
***リストで始まるJSONを読み込む [#f475ba6a]
じゃあ、リストの場合は以下のとおり。
// リスト
jsondata = "[1,2]";
List<Integer> result2 = mapper.readValue(jsondata, List....
System.out.println("result2.toString() : " + result2.toS...
出力はこんな感じ
result2.toString() : [1, 2]
まあ、簡単ですなw
***ネストしたリストのJSONを読み込む [#w981d1e3]
こんな感じです。
// ネストしたリスト
jsondata = "[[\"1111\",\"aaaa\"],[\"2222\",\"bbbb\"]]";
List<List<String>> result3 = mapper.readValue(jsondata, ...
System.out.println("result3.toString() : " + result3.toS...
3行目がちょっと入れ子になりました。
出力はこんな感じ
result3.toString() : [[1111, aaaa], [2222, bbbb]]
***マップにリストがネストしたJSONを読み込む [#ec21da2e]
JSONだんだん構造が複雑になってきました。
// オブジェクトの中にリストが含まれているパターン
jsondata = "{\"a\":1,\"b\":2,\"c\":[\"xxxx\",\"yyyy\"]}";
Map<String,Object> result4 = mapper.readValue(jsondata, ...
System.out.println("result4.toString() : " + result4.toS...
System.out.println("result4.a : " + result4.get("a")....
System.out.println("result4.b : " + result4.get("b")....
System.out.println("result4.c[0] : " + result4.get("c")....
System.out.println("result4.c[1] : " + ((List)result4.ge...
System.out.println("result4.c : " + ((List)result4.get("...
出力はこんな感じ
result4.a : class java.lang.Integer:1
result4.b : class java.lang.Integer:2
result4.c[0] : class java.util.ArrayList:[xxxx, yyyy]
result4.c[1] : class java.lang.String:xxxx
result4.c : class java.lang.String:yyyy
これよりも複雑なJSONを読み込むようであれば、再帰処理でMap...
***参考サイト [#pfa0eff6]
-JSON公式サイト?w&br;http://www.json.org/json-ja.html
-Jackson公式サイト&br;http://jackson.codehaus.org/
-JacksonのDLページ&br;http://wiki.fasterxml.com/JacksonDo...
-JacksonのTutorial&br;http://wiki.fasterxml.com/JacksonIn...
-JacksonのDatabindingのページ&br;http://wiki.fasterxml.co...
-Jacksonのjavadoc&br;http://wiki.fasterxml.com/JacksonJav...
-技評のJacksonのStreamingAPIの記事&br;http://gihyo.jp/dev...
***以下、個人メモ : Mapの要素を巡回したい [#ja1c39a9]
Mapの要素を巡回したい場合。
keySet()メソッドでキーのセットがとれて、これが拡張forルー...
jsondata = "{\"a\":1,\"b\":2,\"c\":[\"xxxx\",\"yyyy\"],\...
Map<String,Object> result5 = mapper.readValue(jsondata, ...
for (String key : result5.keySet()){
if (result5.get(key) instanceof Map) {
System.out.println("result4.get(\""+key+"\") instanceo...
}else if (result5.get(key) instanceof List){
System.out.println("result4.get(\""+key+"\") instanceo...
}
}
出力はこんな感じ。
result4.get("c") instanceof List
result4.get("d") instanceof Map
※個別の値を出力するのは面倒だったので割愛。
-http://docs.oracle.com/javase/jp/6/api/
-http://docs.oracle.com/javase/jp/6/api/java/util/Set.html
SetがIteratorインターフェースを実装しているんだねw
ページ名: