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

com.threatconnect.app.addons.util.JsonUtil Maven / Gradle / Ivy

There is a newer version: 2.15.0
Show newest version
package com.threatconnect.app.addons.util;

import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * @author Greg Marut
 */
public class JsonUtil
{
	private static final Logger logger = LoggerFactory.getLogger(JsonUtil.class);
	
	public static final String TRUE = "true";
	
	private JsonUtil()
	{
		
	}
	
	/**
	 * Given a root node, traverses the json object and safely handles any null objects along the
	 * way
	 *
	 * @param root
	 * @param paths
	 * @return
	 */
	public static JsonArray getAsJsonArray(final JsonElement root, final String... paths)
	{
		// make sure the element is not null
		JsonElement element = get(root, paths);
		if (null != element)
		{
			return element.getAsJsonArray();
		}
		else
		{
			return null;
		}
	}
	
	/**
	 * Given a root node, traverses the json object and safely handles any null objects along the
	 * way
	 *
	 * @param root
	 * @param paths
	 * @return
	 */
	public static String getAsString(final JsonElement root, final String... paths)
	{
		// make sure the element is not null
		JsonElement element = get(root, paths);
		if (null != element)
		{
			return element.getAsString();
		}
		else
		{
			return null;
		}
	}
	
	/**
	 * Given a root node, traverses the json object and safely handles any null objects along the
	 * way
	 *
	 * @param root
	 * @param paths
	 * @return
	 */
	public static Integer getAsInt(final JsonElement root, final String... paths)
	{
		// make sure the element is not null
		JsonElement element = get(root, paths);
		if (null != element)
		{
			return element.getAsInt();
		}
		else
		{
			return null;
		}
	}
	
	public static boolean getAsBoolean(final JsonElement root, final String... paths)
	{
		// make sure the element is not null
		JsonElement element = get(root, paths);
		if (null != element)
		{
			return TRUE.equalsIgnoreCase(element.getAsString());
		}
		else
		{
			return false;
		}
	}
	
	public static JsonElement get(final JsonElement root, final String... paths)
	{
		JsonElement current = root;
		
		// for each of the paths
		for (String path : paths)
		{
			// make sure the current is not null
			if (null != current)
			{
				//check to see if the current object is a json object
				if (current.isJsonObject())
				{
					current = current.getAsJsonObject().get(path);
				}
				//check to see if the current object is a json array
				else if (current.isJsonArray())
				{
					JsonArray jsonArray = current.getAsJsonArray();
					
					//make sure the json array is not empty
					if (jsonArray.size() > 0)
					{
						current = current.getAsJsonArray().get(0).getAsJsonObject().get(path);
					}
					else
					{
						current = null;
					}
				}
				else
				{
					//unable to determine the type of this json element
					logger.warn("Unable to determine json element type {}", current.toString());
					current = null;
				}
			}
		}
		
		return current;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy