Java解析嵌套型json格式数据,正则表达式剔除特殊字符

json数据如下:
String result={ 
		"cpesn":"04520718290098394",
		"count":4,
		"action":[{"duration":"0","detail":"待机","time":"1564663287821","type":"待机"},   
			  {"duration":"2.5","detail":"开机","time":"1564663288298","type":"开机"},   
			  {"duration":"0.0","detail":"苏州新闻综合高清","time":"1564663288298","type":"广播频道"},   
			  {"duration":"0","detail":"关机","time":"1564663438298","type":"关机"}]
		}  

其中,action是json对象里的数组,我们可以直接接收json字符串中的cpesn,count,对于action可以存进数组中。

下面对json数据进行解析
//定义一个json对象jo,用来接收解析的JSON字符串result  
JSONObject jo = (JSONObject) JSON.parse(result);
//JSONObject jo = new JSONObject(result);//跟上面一句同样的效果
//定义一个json数组jsonArray,用来接收JSON对象里的数组action               
JSONArray jsonArray = jo.getJSONArray("action");//从jo对象中获取action数组存进jsonArray中
for(int i=0;i<jsonArray.size();i++) 
{  
	stbaction =new StbAction();//实例化一个stbaction对象      
	stbaction.cpesn = jo.getString("cpesn");//直接从json对象中获取cpesn
	stbaction.CREATE_DATE=CREATE_DATE;//非json字符串中的值  
	stbaction.COMPLETE_DATE=COMPLETE_DATE;//非json字符串中的值  
	stbaction.TASK_ID=TASK_ID;//非json字符串中的值
	stbaction.count =jo.getString("count");//直接从json对象中获取count     
	String itemStr = jsonArray.get(i).toString();      
	JSONObject itemObject = (JSONObject) JSON.parse(itemStr);//获取action数组中第i个json对象
	//JSONObject itemObject = (JSONObject)jsonArray.getJSONObject(i); //跟上面2句同样的效果
	stbaction.time =itemObject.getString("time");//获取action数组中第i个json对象中的time
	stbaction.type =itemObject.getString("type");//获取action数组中第i个json对象中的type
	//正则表达式去除json解析的特殊字符串(保留中括号里面的字符)  
	stbaction.detail =itemObject.getString("detail").replaceAll("[^0-9a-zA-Z\u4e00-\u9fa5.,,。? “”:]", "");    
	stbaction.duration =itemObject.getString("duration");//获取action数组中第i个json对象中的duration
	actionlist.add(stbaction); //把stbaction对象添加到列表
}
正则表达式剔除特殊字符

在上面的代码片段中,我们可以看到有这样一句,利用正则表达式剔除json数据中的无效字符,这里我称它为json数据格式化,考虑到有时候需要将这些数据添加至数据库时不合法的情况。

//正则表达式去除json解析的特殊字符串(保留中括号里面的字符)  
 stbaction.detail =itemObject.getString("detail").replaceAll("[^0-9a-zA-Z\u4e00-\u9fa5.,,。? “”:]", "");    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值