All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.uniliva.commonsutils.utils.JsonUtils Maven / Gradle / Ivy

The newest version!
package com.github.uniliva.commonsutils.utils;

import static java.lang.String.format;

import java.io.IOException;

import org.springframework.util.ResourceUtils;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.github.uniliva.commonsutils.exception.ParseException;
import com.github.uniliva.commonsutils.exception.ValidacaoException;

public class JsonUtils {
	private static ObjectMapper mapper;

	static {
		mapper = new ObjectMapper();
		mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
		mapper.registerModule(new JavaTimeModule());
	}

	private JsonUtils() {
		super();
	}

	public static String paraJson(final Object obj) {
		String jsonFormatado = null;
		try {
			jsonFormatado = mapper.writeValueAsString(obj);
		} catch (final JsonProcessingException e) {
			throw new ParseException("Erro ao converter o DTO para Json.", e.getMessage());
		}
		return jsonFormatado;
	}

	public static void validarJson(final String json) {
		try {
			final JsonNode readTree = mapper.readTree(json);
			if (readTree.isNull()) {
				throw new ValidacaoException("Erro de Json nulo.");
			}
		} catch (final IOException e) {
			throw new ValidacaoException("Erro ao validar Json.", e.getMessage());
		}
	}

	public static boolean isJsonValido(final String json) {
		try {
			mapper.readTree(json);
			return true;
		} catch (final IOException e) {
			return false;
		}

	}

	/**
	 * 

* Classe que carrega um arquivo .json e tenta converter para uma classe de * acordo com o tipo passado. * * @param - Classe que representa do tipo de objeto as ser deserializado * @param caminhoJson Caminho a partir do classpath.
* Exemplo: (utron/src/main/resources/) * 'entrada/agendamento-01.json' * @param tipoObjeto - Tipo do objeto * @return Objeto de acordo com o tipo passado. */ public static T paraObjViaArquivoJson(final String caminhoJson, final TypeReference tipoObjeto) { try { return mapper.readValue(ResourceUtils.getFile(format("classpath:%s", caminhoJson)), tipoObjeto); } catch (final IOException e) { throw new ParseException("Erro ao tentar converter Json.", e.getMessage()); } } /** * Classe que o conteúdo de um json e tenta converter para uma classe de acordo * com o tipo passado. * @param - Classe que representa do tipo de objeto as ser deserializado * @param conteudoJson - String do Json do objeto * @param tipoObjeto - Tipo do objeto * @return 0bjeto gerado com o Json */ public static T paraObjViaJson(final String conteudoJson, final TypeReference tipoObjeto) { try { return mapper.readValue(conteudoJson, tipoObjeto); } catch (final IOException e) { throw new ParseException("Erro ao tentar converter Json.", e.getMessage()); } } public static ObjectMapper getMapper() { return mapper; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy