import java.util.Iterator;
import java.util.List;import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;import android.content.ContentValues;import com.google.gson.Gson;/*** 常用的Json工具类,包含Json转换成实体、实体转json字符串、list集合转换成json、数组转换成json*/
public class JsonUtil {private JsonUtil(){}private static Gson gson = new Gson();/*** 将一个对象转换成一个Json字符串* @param t* @return*/public static <T> String objectToJson(T t){if (t instanceof String) {return t.toString();} else {return gson.toJson(t);}}/*** 将Json字符串转换成对应对象* @param jsonString  Json字符串* @param clazz      对应字节码文件.class* @return*/@SuppressWarnings("unchecked")public static<T> T jsonToObject(String jsonString, Class<T> clazz){if (clazz == String.class) {return (T) jsonString;} else {return (T)gson.fromJson(jsonString, clazz);}}/*** 将List集合转换为json字符串* @param list  List集合* @return*/public static<T> String listToJson(List<T> list){JSONArray jsonArray = new JSONArray();JSONObject jsonObject = null;try {for (int i = 0; i < list.size(); i++) {jsonObject = new JSONObject(objectToJson(list.get(i)));jsonArray.put(jsonObject);}} catch (JSONException e) {e.printStackTrace();} finally {if (jsonObject != null) {jsonObject = null;}}return jsonArray.toString();}/*** 将数组转换成json字符串* @param array        数组* @return*/public static<T> String arrayToJson(T[] array){JSONArray jsonArray = new JSONArray();JSONObject jsonObject = null;try {for (int i = 0; i < array.length; i++) {jsonObject = new JSONObject(objectToJson(array[i]));jsonArray.put(jsonObject);}} catch (JSONException e) {e.printStackTrace();} finally {if (jsonObject != null) {jsonObject = null;}}return jsonArray.toString();}/*** 获取json字符串中的值* @param json    json字符串* @param key    键值* @param clazz   所取数据类型,例如:Integer.class,String.class,Double.class,JSONObject.class* @return  存在则返回正确值,不存在返回null*/public static<T> T getJsonObjectValue(String json, String key, Class<T> clazz){try {return getJsonObjectValue(new JSONObject(json), key, clazz);} catch (JSONException e) {e.printStackTrace();}return null;}/*** 获取jsonObject对象中的值* @param jsonObject jsonObject对象* @param key   键值* @param clazz   所取数据类型,例如:Integer.class,String.class,Double.class,JSONObject.class* @return  存在则返回正确值,不存在返回null*/@SuppressWarnings("unchecked")public static<T> T getJsonObjectValue(JSONObject jsonObject, String key, Class<T> clazz){T t = null;try {if (clazz == Integer.class) {t = (T) Integer.valueOf(jsonObject.getInt(key));}else if(clazz == Boolean.class){t = (T) Boolean.valueOf(jsonObject.getBoolean(key));}else if(clazz == String.class){t = (T) String.valueOf(jsonObject.getString(key));}else if(clazz == Double.class){t = (T) Double.valueOf(jsonObject.getDouble(key));}else if(clazz == JSONObject.class){t = (T) jsonObject.getJSONObject(key);}else if(clazz == JSONArray.class){t = (T) jsonObject.getJSONArray(key);}else if(clazz == Long.class){t = (T) Long.valueOf(jsonObject.getLong(key));}} catch (JSONException e) {e.printStackTrace();}return t;}/*** json字符串转换为ContentValues* @param json   json字符串* @return*/@SuppressWarnings("rawtypes")public static ContentValues jsonToContentValues(String json){ContentValues contentValues = new ContentValues();try {JSONObject jsonObject = new JSONObject(json);Iterator iterator = jsonObject.keys();String key;Object value;while (iterator.hasNext()) {key = iterator.next().toString();value = jsonObject.get(key);String valueString = value.toString();if (value instanceof String) {contentValues.put(key, valueString);}else if(value instanceof Integer){contentValues.put(key, Integer.valueOf(valueString));}else if(value instanceof Long){contentValues.put(key, Long.valueOf(valueString));}else if(value instanceof Double){contentValues.put(key, Double.valueOf(valueString));}else if(value instanceof Float){contentValues.put(key, Float.valueOf(valueString));}else if(value instanceof Boolean){contentValues.put(key, Boolean.valueOf(valueString));}}} catch (JSONException e) {e.printStackTrace();throw new Error("Json字符串不合法:" + json);}return contentValues;}
}

JsonUtil工具类:相关推荐

  1. jsonutil java_Java实现的JSONUtil工具类与用法示例

    本文实例讲述了Java实现的JSONUtil工具类与用法.分享给大家供大家参考,具体如下: import java.util.HashMap; import java.util.Map; import ...

  2. java 使用JSONUtil工具类

    首先引用Meven包:Maven: cn.hutool:hutool-all:5.6.1 在日常开发中,需要经常将参数输出到控制台或进行记录,当参数是实体时这需要将实体类转为json字符串,下边是代码 ...

  3. Android 工具类 大全

    AppUtil工具类: 常用APP的工具类,包含版本号.版本名称.安装的应用程序ICON https://blog.csdn.net/houyingshang/article/details/8109 ...

  4. cookie工具类 java_springboot封装JsonUtil,CookieUtil工具类代码实例

    这篇文章主要介绍了springboot封装JsonUtil,CookieUtil工具类过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Jso ...

  5. 常用JSON工具类JsonUtil封装

    前言 项目中经常会有String转Object以及Object转Json字符串的需求,故封装一个常用Json工具类 Maven依赖 <dependency><groupId>o ...

  6. 用jackson封装的JSON工具类

    package hjp.smart4j.framework.util;import com.fasterxml.jackson.databind.ObjectMapper; import org.sl ...

  7. 总结的一些json格式和对象/String/Map/List等的互转工具类

    总结的一些json格式和对象/String/Map/List等的互转工具类,有需要的可以看看,需要引入jackson-core-asl-1.7.1.jar.jackson-jaxrs-1.7.1.ja ...

  8. Android Studio 插件开发详解二:工具类

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78112856 本文出自[赵彦军的博客] 在插件开发过程中,我们按照开发一个正式的项 ...

  9. Code片段 : .properties属性文件操作工具类 JSON工具类

    摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! "贵专" - 泥瓦匠 一.java.util.Properties API ...

最新文章

  1. 你熟知的那个杀毒软件公司McAfee,用这种方法骗过护照人脸识别系统
  2. elasticsearch mapping
  3. 英特尔联合Facebook研发AI芯片:CPU老厂能在AI时代打好翻身仗吗
  4. 手写识别python_Python徒手实现识别手写数字—图像识别算法(K最近邻)
  5. 【项目管理】接手一支技术团队,你会做些哪些事?
  6. JSON转换为excel工具
  7. spine纹理解包 黑底_“包治百病”是真理,这些小众包真的很治愈系
  8. android 框架_推荐一个更贴近 android 场景的启动框架 | Anchors
  9. mvc razor html.list,NetCore Web应用开发-HTML,C#,Razor补充
  10. 关于php的一些小知识!
  11. 【GCN+AE代码逐行学习】参考资料记录
  12. C语言求1000以内完数
  13. 账号分享ios《Lanota》
  14. Linux下安装神通数据库
  15. Ajax不执行回调函数
  16. 国家开放大学2021春1062文学英语赏析题目
  17. 计算机科学与技术工程师职称考试试题,2018年下半年网络工程师考试下午试题及答案...
  18. 联想G40-70旧物改造小总结——替换固态硬盘电池光驱啥的
  19. 数据结构与算法:实验报告(串及其应用)
  20. 一种夸张的炒股计算方法

热门文章

  1. 为何Linux要成为XP的好伴侣?
  2. 【组件封装】vue打字机效果和文字发光
  3. 再观《离开雷锋的日子》
  4. I wanna go home
  5. 1455D. Sequence and Swaps(思维)
  6. 视频图像处理基础知识5(RGB与Ycbcr相互转换公式 )
  7. word格式问题——英文单词间距太大、文本中嵌入公式导致行距太大、单双栏排版
  8. wxWidgets使用
  9. Project Euler 题解 #19 Counting Sundays
  10. 【开发】前端工程——layui