JAVA解析JSON问题,怎么解析,急!!
String jsonstr = "[
{
"precision": "zip",
"Latitude": 37.7668,
"Longitude": -122.3959,
"Thumbnail": {
"Url": "和谐xxx",
"Height": 125,
"Width": "100"
}
},
{
"precision": "zip",
"Latitude": 37.371991,
"Longitude": -122.026020,
"Thumbnail": {
"Url": "和谐xxx",
"Height": 125,
"Width": "100"
}
}
]"
我想解析它,得到URL、Height、Width;我想用java对象数组,存放Thumbnail中的值,怎么做啊?
JSONArray jsonArr = new JSONArray(jsonstr);//通过jsonstr字符串构造JSONArray对象
JSONObject obj = (JSONObject)jsonArr.get(0);//获取jsonArr里第一个对象并把它赋值给 //JSONObject对象--因为你这里第一个对象是一个json串
//获取json串里Thumbnail属性的值,因为还是一个json串,这里还转换为JSONObject对象
JSONObject thumbnail = (JSONObject)obj.get("Thumbnail");
//获取Url属性,得到值
String url = (String)thumbnail.get("Url");
//只是示范一下,这里取到的是第一个Thumbnail的Url属性的值,相信看后你应该能取到你想要的
你把这个字符串反向解析成为一个 json对象,再通过json类提供的方法读取里面的值即可。
--------
---前端组装成json格式的数据
addHoliday : function(btn){
var allRecords = [];
Ext.each(this.PPanel.datePick,function(pick){
var records = pick.getSelectDates();
Ext.each(records,function(record){
Ext.apply(record.json,{datetype:btn.datetype,color:btn.color});
allRecords.push(record.json);
},this);
},this);
var data = Ext.util.JSON.encode(allRecords);
Ext.Ajax.request({
url : 'DateSet/DateSet.do',
params : {object:'addHoliday',records:data,token:token},
scope : this,
callback : function(o,s,resp){
if(ajaxRequestFailure(resp.statusText)){
return;
}
var respText = Ext.util.JSON.decode(resp.responseText);
if(respText.success){
for(var i=0;i<this.PPanel.datePick.length;i++){
this.PPanel.datePick[i].reloadDate();
}
}else{
Ext.Msg.alert('错误',respText.error);
}
}
});
},
-----json格式数据
[
{
"a_num": "7",
"name": "<font color=red>7</font>",
"day": "7",
"year": "2015",
"month": "2",
"spacenum": "6",
"datetype": 3,
"color": "black"
},
{
"a_num": "8",
"name": "<font color=red>8</font>",
"day": "8",
"year": "2015",
"month": "2",
"spacenum": "6",
"datetype": 3,
"color": "black"
},
{
"a_num": "14",
"name": "<font color=red>14</font>",
"day": "14",
"year": "2015",
"month": "2",
"spacenum": "6",
"datetype": 3,
"color": "black"
}
]
-----java_片段
String data = uFunc.getString(request.getParameter("records"));//uFunc就是去除空格和特殊字符
JSONArray jArray = JSONArray.fromObject(data);
JSONObject jsonObject;
String sSQL = "",year,month,day,datetype,color;
List<String> sqlList = new ArrayList<String>();
for(int i = 0; i < jArray.size(); i++){
jsonObject = jArray.getJSONObject(i);
year = uFunc.getJSONString(jsonObject, "year");
if(uFunc.IsNullString(year))
continue;
month = uFunc.getJSONString(jsonObject, "month");
day = uFunc.getJSONString(jsonObject, "day");
datetype = uFunc.getJSONString(jsonObject, "datetype");
color = uFunc.getJSONString(jsonObject, "color");
sSQL = "update sw_work.dateset a set a.datetype = '"+datetype+"',a.color='"+color+"' where a.year="+year+" and a.month="+month+" and a.day="+day;
sqlList.add(sSQL);//当批量执行需要提交事务的语句时 用sqlList来添加执行;一条语句时可直接在execute中写sql语句。
}
try{
this.getBaseDao().execute(sqlList);
uFunc.writeSuccessToResponse(response, "操作成功");
}catch(Exception ex){
ex.printStackTrace();
uFunc.writeErrorToResponse(response, ex.getMessage());
}