Keyが一意なJSONをJacksonでパースする。

  • 15
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

「普通、それ値だろ」という情報がキーになってるJSONをJacksonでパースしたい場合。

{ 
  "cat001": { "name": "momo" },
  "cat002": { "name": "chaa" },
  "cat003": { "name": "maru" } 
}

ほぼ下記に書いてあるとおり。
java - how whould I parse JSON with numerical object keys in Jackson JSON - Stack Overflow

public class Main {
    private static String json = "{ \"cat001\": { \"name\": \"momo\" }, \"cat002\": { \"name\": \"chaa\" }, \"cat003\": { \"name\": \"maru\" } }";

    public static void main(String[] args) throws JsonProcessingException, IOException {
        ObjectMapper mapper = new ObjectMapper();
        JsonNode root = mapper.readTree(json);
        Iterator<String> fieldNames = root.getFieldNames();
        while (fieldNames.hasNext()) {
            String fieldName = fieldNames.next();
            JsonNode node = root.get(fieldName);
            System.out.println(node.toString());
        }
    }
}

結果:

{"name":"momo"}
{"name":"chaa"}
{"name":"maru"}