Java tutorial
/* * Copyright 2014 Leonardo Rossetto * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.github.leonardoxh.temporeal.app.utils; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import com.github.leonardoxh.temporeal.app.model.Model; import java.util.Collections; import java.util.List; /** * Esta classe vai nos ajudar a transformar nossos objetos em json e vice e versa */ public final class JsonUtils { private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); /** * Transforma qualquer um dos nossos models para json * @param model o modelo que vamos transformar em um JSON valido * @param <T> qualquer coisa que extenda nossa classe Model * @return o nosso model em formato JSON ou null em falha */ public static <T extends Model> String toJson(T model) { try { return OBJECT_MAPPER.writeValueAsString(model); } catch (Exception e) { e.printStackTrace(); } return null; } /** * Transforma qualquer json valido para um de nossos modelos * @param json o json que vamos transformar em um de nossos models * @param clazz qual a classe que queremos que retorne * @param <T> o tipo de modelo para retornar * @return o nosso modelo a partir do json em sucesso, null em falha */ public static <T extends Model> T fromJson(String json, Class<T> clazz) { try { return OBJECT_MAPPER.readValue(json, clazz); } catch (Exception e) { e.printStackTrace(); } return null; } /** * Este metodo tambem transforma qualquer json valido * em algum dos nossos models porem este retorna uma lista * @param json um json valido para transformarmos em objeto * @param clazz a classe que esperamos * @param <T> tipo da classe para retorno * @return uma lista com os nossos models (nunca null) */ public static <T extends Model> List<T> listFromJson(String json, Class<T> clazz) { try { return OBJECT_MAPPER.readValue(json, new TypeReference<List<T>>() { }); } catch (Exception e) { e.printStackTrace(); } return Collections.emptyList(); } }