Json数据格式解析示例 (语言:Java 包:org.json.jar)

以做过的项目为例,Java解析Json格式数据,使用开源包json.jar。业务背景:       在数据库某个表中,存有Json数据格式的数据,现在要把数据解析到java中。

package com.test.json;

import org.apache.log4j.Logger;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

/**
 * 
 * 解析JSON数据格式
 * 
 * @category:测试
 * @author        hanhuayi
 * @version v3.0,Jun 17, 2012 2:31:27 PM
 * @see
 */
public class TestJSON{

	/**
	* log4j
	*/
	private static Logger logger = Logger.getLogger(TestJSON.class);

	//表格名
	private static String gridName = "list";

	//测试Json格式数据
	String str = "{'list':[{'_show_edit':false,'sum':0,'_height':30,'_need_edit':true,'width':200,'delete':false,'displayname':'供应商编码','need':0,'alias':null,'code':'ccode','lock':0,'_prec_edit':false,'prec':null,'align':'left','_sum_edit':false,'_id':'autoID-7','cdatatype':'0','show':1,'name':'供应商编码','parent':null,'_displayname_edit':true,'flex':false},{'_show_edit':false,'sum':0,'_height':30,'_need_edit':true,'width':null,'delete':false,'displayname':'供应商名称','need':0,'alias':null,'code':'cname','lock':0,'_prec_edit':false,'prec':null,'align':'left','_sum_edit':false,'_id':'autoID-8','cdatatype':'0','show':1,'name':'供应商名称','parent':null,'_displayname_edit':true,'flex':false},{'_show_edit':true,'sum':0,'_height':30,'_need_edit':true,'width':null,'delete':false,'displayname':'供应商简称','need':0,'alias':null,'code':'csname','lock':0,'_prec_edit':false,'prec':null,'align':'left','_sum_edit':false,'_id':'autoID-9','cdatatype':'0','show':1,'name':'供应商简称','parent':null,'_displayname_edit':true,'flex':false},{'_show_edit':true,'sum':0,'_height':30,'_need_edit':true,'width':null,'delete':false,'displayname':'助记码','need':0,'alias':null,'code':'chotcode','lock':0,'_prec_edit':false,'prec':null,'align':'left','_sum_edit':false,'_id':'autoID-10','cdatatype':'0','show':1,'name':'助记码','parent':null,'_displayname_edit':true,'flex':false}]}";

	public static void main(String[] args) {
	//列属性
	String[] colArributes = new String[]{"displayname","show","code",""};

	//解析JSON数据格式,获得列属性集合
	List<Map> colData= parseJSONStyle(gridName,str,colArributes);
	}


	/**
	* 
	* 解析Json格式数据
	* 
	* @param gridName
	* @param str
	* @param colArributes
	* @return 
	* @return List<Map>
	* @exception 异常描述
	* @see
	*/
	@SuppressWarnings("unchecked")
	private static List<Map> parseJSONStyle(String gridName,String str,String[] colArributes){
	List<Map> colData = new ArrayList<Map>();

	try {
		JSONObject jso= new JSONObject(str);

		if(jso.has(gridName)) {
			JSONArray colArrayJson = jso.getJSONArray(gridName);
			// logger.info(colArrayJson);

		for (int i = 0; i < colArrayJson.length(); i ++) {
			JSONObject colJso = colArrayJson.getJSONObject(i);

			for (int j = 0; j < colArributes.length; j ++) {
				Map colMap = new HashMap();
				colMap.put(colArributes[j], colJso.get(colArributes[j]));
				colData.add(colMap);
				// logger.info(colJso.get("name"));
				}
			}
		}

	} catch (JSONException e) {
		e.printStackTrace();
	}

	return colData;
	}
}


下面是一个更简单的例子(网上摘取),运行一遍就知道大致上的解析规则:
String a="{"data":{"bidirection":true},"msg":"成功","success":true,"code":0,"array":[{"a":true},{"a":false}]}";
JSONObject jso=new JSONObject(a);
System.out.println(jso.get("data").toString());
JSONObject jso2=jso.getJSONObject("data");
System.out.println(jso.get("success"));
System.out.println(jso2.getBoolean("bidirection"));
JSONArray jso3=jso.getJSONArray("array");
System.out.println(jso3.get(0));

简单的说明一下:
在上面的Json格式数据字符串a中,
a  :是一个Json对象
"data":{"bidirection":true}  :是一个Json对象
"bidirection":true  :是键值对
"array":[{"a":true},{"a":false}]  :是Json对象里的一个Json数组,这个数组里的元素是Json对象


JSON的数据格式,可以参照:http://baike.baidu.com/view/136475.htm 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值