![JAR search and dependency download from the Maven repository](/logo.png)
com.anysoft.util.JsonTools Maven / Gradle / Ivy
package com.anysoft.util;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import com.jayway.jsonpath.spi.JsonProvider;
import com.jayway.jsonpath.spi.JsonProviderFactory;
/**
* Json的一些工具
* @author duanyy
* @since 1.0.6
*
* @version 1.0.8 [20140410 duanyy]
* + Add {@link com.anysoft.util.JsonTools#setString(Map, String, String) setString(Map, String, String)}
* + Add {@link com.anysoft.util.JsonTools#setInt(Map, String, int) setInt(Map,String,int)}
* + Add {@link com.anysoft.util.JsonTools#setBoolean(Map, String, boolean) setBoolean(Map,String,boolean)}
* + Add {@link com.anysoft.util.JsonTools#getBoolean(Map, String, boolean) getBoolean(Map,String,boolean)}
*
* @version 1.0.14 [20140615 duanyy]
* + 增加一下Json工具
*
* @version 1.4.1 [20140901 duanyy]
* + 增加getDouble和setDouble方法
*
* @version 1.4.2 [20140903 duanyy]
* + 修正getDouble和getLong的类型转换bug
*
* @version 1.4.4 [20140912 duanyy]
* + 将Map参数进行参数化
*
* @version 1.6.4.27 [20160125 duanyy]
* - 根据sonar建议优化代码
*
* @version 1.6.4.41 [20160401 duanyy]
* - 增加float操作方法
*
* @version 1.6.6.13 [20170106 duanyy]
* - 增加json2txt和txt2json功能
*
* @version 1.6.7.5 [20170119 duanyy]
* - 允许输入的json为空
*/
public class JsonTools {
protected static JsonProvider provider = null;
static {
provider = JsonProviderFactory.createProvider();
}
private JsonTools(){
}
/**
* 从Json对象中获取指定的属性值
*
* @param json Json对象
* @param name 属性名
* @param defaultValue 缺省值
* @return 属性值
*/
public static String getString(Map json,String name,String defaultValue){
if (json == null){
return defaultValue;
}
Object found = json.get(name);
if (found == null){
return defaultValue;
}
if (found instanceof String){
return (String)found;
}
return found.toString();
}
/**
* 向Json对象中设置指定的属性值
* @param json Json对象
* @param name 属性名
* @param value 属性值(String)
*
* @since 1.0.8
*/
public static void setString(Map json,String name,String value){
if (StringUtils.isNotEmpty(name) && StringUtils.isNotEmpty(value)){
json.put(name, value);
}
}
/**
* 从Json对象中获取指定的属性值
* @param json Json对象
* @param name 属性名
* @param defaultValue 缺省值
* @return 属性值
*/
public static int getInt(Map json,String name,int defaultValue){
if (json == null){
return defaultValue;
}
Object found = json.get(name);
if (found == null){
return defaultValue;
}
if (found instanceof Integer){
return (Integer)found;
}
try {
return Integer.parseInt(found.toString());
}catch (NumberFormatException ex){
return defaultValue;
}
}
/**
* 向Json对象中设置指定属性值
* @param json
* @param name
* @param value
*
* @since 1.4.1
*/
public static void setDouble(Map json,String name,double value){
if (StringUtils.isNotEmpty(name)){
json.put(name, value);
}
}
/**
* 从Json对象中获取属性值
* @param json
* @param name
* @param dftValue
* @return double value
*
* @since 1.4.1
*/
public static double getDouble(Map json,String name,double dftValue){
if (json == null){
return dftValue;
}
Object found = json.get(name);
if (found == null){
return dftValue;
}
if (found instanceof Double){
return (Double)found;
}
try {
return Double.parseDouble(found.toString());
}catch (NumberFormatException ex){
return dftValue;
}
}
/**
* 向Json对象中设置指定值
* @param json Json对象
* @param name 属性名
* @param value float值
*/
public static void setFloat(Map json,String name,float value){
if (StringUtils.isNotEmpty(name)){
json.put(name, value);
}
}
/**
* 从Json对象中获取属性值
* @param json Json对象
* @param name 属性名
* @param dftValue 缺省值
* @return float value
*
* @since 1.6.4.41
*/
public static float getFloat(Map json,String name,float dftValue){
if (json == null){
return dftValue;
}
Object found = json.get(name);
if (found == null){
return dftValue;
}
if (found instanceof Float){
return (Float)found;
}
try {
return Float.parseFloat(found.toString());
}catch (NumberFormatException ex){
return dftValue;
}
}
/**
* 向Json对象中设置指定属性值
* @param json Json对象
* @param name 属性名
* @param value 属性值
*/
public static void setInt(Map json,String name,int value){
if (StringUtils.isNotEmpty(name)){
json.put(name,value);
}
}
/**
* 从Json对象中获取指定的属性值
* @param json Json对象
* @param name 属性名
* @param defaultValue 缺省值
* @return 属性值
*
* @since 1.0.14
*/
public static long getLong(Map json,String name,long defaultValue){
if (json == null){
return defaultValue;
}
Object found = json.get(name);
if (found == null){
return defaultValue;
}
if (found instanceof Long){
return (Long)found;
}
try {
return Long.parseLong(found.toString());
}catch (NumberFormatException ex){
return defaultValue;
}
}
/**
* 向Json对象中设置指定属性值
* @param json Json对象
* @param name 属性名
* @param value 属性值
*
* @since 1.0.14
*/
public static void setLong(Map json,String name,long value){
if (StringUtils.isNotEmpty(name)){
json.put(name,value);
}
}
/**
* 从Json对象中获取指定的属性值
* @param json Json对象
* @param name 属性名
* @param defaultValue 缺省值
* @return 属性值
*
* @since 1.0.8
*/
public static boolean getBoolean(Map json,String name,boolean defaultValue){
if (json == null){
return defaultValue;
}
Object found = json.get(name);
if (found == null){
return defaultValue;
}
if (found instanceof Boolean){
return (Boolean)found;
}
return BooleanUtils.toBoolean(found.toString());
}
/**
* 向Json对象中设置指定的属性值
* @param json Json对象
* @param name 属性名
* @param value 属性值
*/
public static void setBoolean(Map json,String name,boolean value){
if (StringUtils.isNotEmpty(name)){
json.put(name,value);
}
}
@SuppressWarnings("unchecked")
public static void xml2Json(Element root, Map json) {
NodeList children = root.getChildNodes();
for (int i = 0, length = children.getLength(); i < length; i++) {
Node n = children.item(i);
int nodeType = n.getNodeType();
if (nodeType == Node.ELEMENT_NODE){
Element e = (Element) n;
String key = e.getNodeName();
List
© 2015 - 2025 Weber Informatics LLC | Privacy Policy