`

JSON常用格式大处理

    博客分类:
  • Java
阅读更多
总结了日常开发中对Json格式的处理,需要下载json相关Jar;这里提供下主要Jar
json-lib-2.2.3-jdk13.jar

import net.sf.json.JSON;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.xml.XMLSerializer;

/**
 * Json串处理工具类
 * json,list,map等之间的各种转化
 * @author
 * @version 2.0 create at,2009-2-12
 * 
 */
public class JsonUtil {
	/**
	 * 将json格式的字符串转化为jsonobject
	 * @param str
	 * @return
	 * @throws ApplicationException 
	 */
	public static JSONObject stringToJsonObject(String str) throws ApplicationException {
		JSONObject jsonObject = null;
		if (Validator.isNotNull(str)) {
			try{
				jsonObject = JSONObject.fromObject(str);
			}catch(Exception ex){
				throw new ApplicationException("要转化的字符串格式不对,必须为json格式!");
			}
		}
		return jsonObject;
	}

	/**
	 * 从指定的List<map>对象中获取要设置的值后组装成返回给前台的JSON对象字符串.
	 * 主要用于给前台分页grid组装数据
	 * @param list    list<map>从数据库中查询出来的数据
	 * @param count   总数
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public static String fromMap(List list, int count) {
		//将list<map>转化为jsonarray
		JSONArray options = formListArray(list);
		JSONObject result = new JSONObject();
		result.put("result", options);
		result.put("totalCount", count);
		return result.toString();
	}

	/**
	 * 将Map<String,String>转化为JSONObject格式的字符串
	 * @param map
	 * @return {"success":true,"result":{}}
	 */
	public static String fromMapToJson(Map<String, String> map) {
		Iterator<String> it = map.keySet().iterator();
		JSONObject jsonObject = new JSONObject();
		JSONObject json = new JSONObject();
		while (it.hasNext()) {
			String key = (String) it.next();
			jsonObject.put(key.toLowerCase(), map.get(key));
		}
		json.put("success", true);
		json.put("result", jsonObject.toString());
		return json.toString();
	}

	/**
	 * 	将list<map>转化为jsonobject格式的字符串
	 * @param list
	 * @return {"result":{...}}
	 */
	@SuppressWarnings("unchecked")
	public static String fromListMap(List list) {
		JSONArray options = new JSONArray();
		for (Object obj : list) {
			Iterator it = ((Map) obj).keySet().iterator();
			Object value;
			JSONObject option = new JSONObject();
			while (it.hasNext()) {
				String key = (String) it.next();
				value = ((Map) obj).get(key);
				value = value != null ? value : "";
				option.put(key.toLowerCase(), value);
			}
			options.add(option);
		}
		JSONObject result = new JSONObject();
		result.put("result", options.toString());
		return result.toString();
	}

	/**
	 * 从list<map>转化为treenode的json
	 * @param list
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public static String toAsynTreeJson(List list) {
		JSONArray ja = new JSONArray();
		for (Object obj : list) {
			Iterator it = ((Map) obj).keySet().iterator();
			JSONObject option = new JSONObject();
			while (it.hasNext()) {
				String key = (String) it.next();
				Object value = ((Map) obj).get(key);
				key = key.toLowerCase();
				value = value == null ? "" : value.toString();
				//是否含有带checkbox的treenode
				if (key.equals("checked")) {
					boolean check = value.equals("1") ? true : false;
					option.put("checked", check);
				}
				//是为叶子节点还是为非叶子节点
				else if("leaf".equals(key)){
					boolean leaf = value.toString().trim().equals("1")?true:false;
					option.put("leaf", leaf);
				}else if("draggable".equals(key)){
					boolean draggable = value.toString().trim().equals("1")?true:false;
					option.put("draggable", draggable);
				}
				else
					option.put(key, value);
			}
			ja.add(option);
		}
		return ja.toString();
	}

	/**
	 * 将list<map>转化为jsonarray
	 * 此JSONArray的格式将会是这样[{},{}]
	 * @param list 
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public static JSONArray formListArray(List list) {
		JSONArray options = new JSONArray();
		for (Object obj : list) {
			Iterator it = ((Map) obj).keySet().iterator();
			JSONObject option = new JSONObject();
			while (it.hasNext()) {
				String key = (String) it.next();
				Object value = ((Map) obj).get(key);
				value = value != null ? value : "";
				option.put(key.toLowerCase(), value);
			}
			options.add(option);
		}
		return options;
	}
	/**
	 * 从List<Model>转化成jsonArray
	 * list中装的对象为具体的po
	 * @param list
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public static JSONArray formListModelArray(List list){
		JSONArray options = new JSONArray();
		for (Object obj : list) {
			options.add(obj);
		}
		return options;
	}
	/**
	 * 将JSONArray逆向转化为List  list中可以为任何元素,
	 * @param json  符合JSONArray格式的字符串
	 * 				可以是很复杂的格式,如[{},[],{a:[],b:{},c:{cc:[]...}},'test']
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public static List JSONArrayConvertList(String json) {
		ArrayList list = new ArrayList();
		JSONArray ja = JSONArray.fromObject(json);
		populateArray(ja, list);
		return list;
	}

	@SuppressWarnings("unchecked")
	private static void populateArray(JSONArray jsonArray, List list) {
		//循环遍历jsonarray
		for (int i = 0; i < jsonArray.size(); i++) {
			if (jsonArray.get(i).getClass().equals(JSONArray.class)) {  //如果元素是JSONArray类型
				ArrayList _list = new ArrayList();
				list.add(_list);
				//递归遍历,此为深度遍历,先把最内层的jsonobject给遍历了
				populateArray(jsonArray.getJSONArray(i), _list);
			} else if (jsonArray.get(i).getClass().equals(JSONObject.class)) {  //如果是JSONObject类型
				HashMap _map = new HashMap();
				list.add(_map);
				//遍历JSONObject
				populate(jsonArray.getJSONObject(i), _map);
			} else {  //如果都不是的话就直接加入到list中
				list.add(jsonArray.get(i));
			}
		}
	}

	@SuppressWarnings("unchecked")
	private static Map populate(JSONObject jsonObject, Map map) {
		for (Iterator iterator = jsonObject.entrySet().iterator(); iterator
				.hasNext();) {
			String entryStr = String.valueOf(iterator.next());
			String key = entryStr.substring(0, entryStr.indexOf("="));
			if (jsonObject.get(key).getClass().equals(JSONObject.class)) {
				HashMap _map = new HashMap();
				map.put(key, _map);
				populate(jsonObject.getJSONObject(key), _map);
			} else if (jsonObject.get(key).getClass().equals(JSONArray.class)) {
				ArrayList list = new ArrayList();
				map.put(key, list);
				populateArray(jsonObject.getJSONArray(key), list);
			} else {
				map.put(key, jsonObject.get(key));
			}
		}
		return map;
	}

	/**
	 * Map转换成JSONObject
	 * @param map
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public JSONObject populateToJsonObject(Map map) {
		    JSONObject temp = new JSONObject();
		    Iterator iter = map.entrySet().iterator();
		    while (iter.hasNext()) {
		      Entry entry = (Entry) iter.next();
		      String key = entry.getKey().toString();
		      String value = entry.getValue() == null ? "" : entry.getValue().toString();
		      temp.put(key, value);
		    }
		    return temp;
		  }
	/**
	*将json转化为xml
	**/  
	public static String jsonToXml(JSON json,Boolean appendHint){
		XMLSerializer xmlSerializer = new XMLSerializer();
		xmlSerializer.setTypeHintsEnabled(appendHint);
		xmlSerializer.setRootName("root");
		return xmlSerializer.write(json);
	}
	/**
	*将xml转化为json
	**/
	public static JSON xmlToJson(String xml){
		XMLSerializer xmlSerializer = new XMLSerializer();
		JSON json = xmlSerializer.read(xml);
		return json;
	}
	
}
0
2
分享到:
评论

相关推荐

    json常用jar包(包括json常用的以及gson包)

    这里提到的"json常用jar包(包括json常用的以及gson包)"包含了几个主流的JSON处理库: 1. **json-parser_fat.jar**:这是一个可能包含多个JSON解析库的综合包,"fat"可能表示它包含了所有必要的组件和依赖,使得...

    JSON常用jar下载

    标题“JSON常用jar下载”指出,我们需要一个特定的Java库来帮助我们完成这个任务。在Java中,常用的JSON库有Gson、Jackson、org.json和Fastjson等。这些库提供了方便的方法,将Java对象(如实体类)序列化为JSON字符...

    json字符串格式化工具

    JsonView是一款常用的JSON格式化工具,它通常作为浏览器插件存在,例如在Chrome或Firefox中。使用JsonView,你可以快速地查看HTTP请求或响应中的JSON数据,而无需手动格式化。以下是JsonView的一些关键特性: 1. **...

    json 常用jar包

    以下是一些常用的Java JSON处理库及其相关的知识点: 1. **Jackson** Jackson是Java最流行的JSON库之一,由 FasterXML 维护。它提供了多种API,如`JsonParser`、`JsonGenerator`用于低级别流式处理,以及`...

    JsonView 格式json串

    这个工具对于处理和分析JSON数据的IT专业人员来说尤其实用,因为JSON(JavaScript Object Notation)是Web服务和应用程序之间常用的数据交换格式,具有轻量级、易于读写的特点。 JSON格式是一种基于文本的结构化...

    PB读写JSON格式数据

    在现代Web开发中,JSON因其简洁性和易读性成为数据交换的常用格式,尤其在RESTful API接口中广泛使用。PowerBuilder作为一个老牌的面向对象的开发工具,虽然其主要应用领域是传统的客户端-服务器应用,但它也提供了...

    Linux JSON 常用解析命令总结

    由于其简洁性和高效性,JSON成为了现代Web应用中最常用的数据交换格式之一。在Linux环境下,为了方便地处理和解析JSON文件,存在多种强大的命令行工具。本文主要介绍两种常见的Linux下JSON解析工具:`jsonfilter` 和...

    JSONis开源文档常用的JSON格式

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于Web应用程序之间传递数据。它以文本形式存储和交换数据,易于人阅读和编写,同时也易于机器解析和生成。JSON.is是一个专注于JSON格式的...

    英汉汉英词库 json数据格式

    标题中的“英汉汉英词库 json数据格式”指的是一个包含英语到汉语和汉语到英语词汇转换的数据库,它被转换成JSON(JavaScript Object Notation)格式的数据。JSON是一种轻量级的数据交换格式,易于人阅读和编写,...

    json操作常用工具类

    对于大体积的JSON数据,可能需要使用流式处理。Jackson和Gson都提供了流式API,可以在处理大型JSON时避免内存溢出。 在Java中,使用这些库通常需要添加对应的Maven或Gradle依赖。例如,对于Jackson,你可能会在你...

    java处理json格式需要的包

    Java处理JSON(JavaScript Object Notation)格式的数据时,通常会依赖一些第三方库,其中`json-lib.jar`是一个常用的工具包。这个库提供了丰富的API,使得Java开发者能够方便地进行JSON对象的序列化与反序列化操作...

    json处理总结.docx

    FastJSON和Jackson是两个常用的JSON处理库,提供了高效、灵活的JSON处理功能。JSON处理的应用场景包括Web开发、移动应用开发、数据交换等领域。因此,JSON处理是非常重要的技术之一,在实际应用中需要根据具体情况...

    Java 中json常用操作所需jar包

    在Java开发中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于前后端数据传输。要进行JSON相关的操作,你需要依赖特定的库,例如`net.sf.json`库,这个库提供了丰富的API来处理JSON数据。...

    json常用方法,json解析

    ### JSON 常用方法与解析 #### 一、JSON 概述 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。在 Web 应用程序中,JSON...

    Oracle Json常用方法封装

    总之,"Oracle Json常用方法封装"是将Oracle的JSON处理能力进行模块化和标准化,提高了开发效率,降低了出错的可能性,同时也有利于团队协作和代码复用。正确理解和使用这个PackageBody,将使你在处理JSON数据时更加...

    json格式化工具.zip

    XML(eXtensible Markup Language)是另一种常用的数据交换格式,虽然结构更复杂,但有时可能需要在JSON与XML之间进行互换。JSON XML Parser.app可以帮助用户轻松地将JSON数据转换成XML,或者将XML数据转换成JSON,...

    Java图形实现json格式化

    因此,优化代码以处理大文件和提高性能是必要的,例如,可以采用流式处理或者分块处理JSON数据,避免一次性加载整个文件到内存。 8. **错误处理**: JSON格式化工具还需要处理无效的JSON输入,提供友好的错误提示...

    PB解析json,解析JSON案例,解析jsondemo

    API接口通常用于提供数据或执行特定功能,而JSON是API数据交换的常用格式。描述中的“PB解析json到数据源”意味着PB能够接收HTTP响应的JSON数据,并将其转换为数据源可以理解的格式,以便进一步处理或显示。同时,...

    json格式转换包

    3. `org.json`库:Java中一个常用的JSON处理库,提供了JSONObject和JSONArray类来创建、解析和操作JSON数据。例如,可以使用`JSONObject.toString()`将JSON对象转换为字符串,或使用`JSONArray.get(int index)`获取...

    json格式与java类对象相互转换

    Jackson库是Java中常用的JSON处理库,它提供了方便的方法来实现这种转换。 一、JSON到Java类对象转换 1. 首先,我们需要一个Java类来映射JSON数据。例如,我们有一个User类,包含id、name和email字段: ```java ...

Global site tag (gtag.js) - Google Analytics