(一). map數據轉爲json字符串
String startTime1=”11:11” String startTime1=”12:12”
String startTime1=”12:00” String startTime1=”01:00”
Map<String,String> m= Maps.newHashMap();
if(StringUtils.isNotBlank(startTime1)&&StringUtils.isNotBlank(endTime1)){
m.put(startTime1,endTime1);
}
if(StringUtils.isNotBlank(startTime2)&&StringUtils.isNotBlank(endTime2)){
m.put(startTime2,endTime2);
}
if(m.size()>0){
if (user != null) {
user.setReceive_time(Json.toJson(m,JsonFormat.compact()));
this.userService.update(user);
}
}
最終轉換成的json字符串格式爲{“11:11”:”12:12”,”12:00”:”01:00”}
(二) 1 json字符串轉爲map的格式用entry形式解析
if (user != null) {
String ss=null;
if(org.apache.commons.lang3.StringUtils.isNotBlank(user.getReceive_time())){
ss=user.getReceive_time();
}
if(ss!=null){
Map<String,String> map=Json.fromJson(Map.class,ss);
if(map!=null){
int i=1;
for(Map.Entry<String,String> entry:map.entrySet()){
mv.addObject("startTime"+i,entry.getKey());
mv.addObject("endTime"+i,entry.getValue());
i++;
}
}
}
這樣,取出的json字符串已經轉爲了map的格式.
3 jsonobject中取到key
實例數據”data”:{“1807260360034666”:”JK615359578GB”}
JSONObject datas = JSONObject.parseObject(resultJson.getString("data"));
Set<String> keySet = datas.keySet();
for (String string : keySet) {
System.out.println(string);
innerOrder.setChangeNo(string);
}
2 json字符串轉爲map的格式用Interator形式解析示例
String store_payment = CommUtil.null2String(config.getStore_payment());
Map map = Json.fromJson(HashMap.class, store_payment);
if (map != null) {
for (Iterator it = map.keySet().iterator(); it.hasNext();) {
String key = (String) it.next();
Object val = map.get(key);
mv.addObject(key, val);
}
}
json轉換成list
List <string > ss = Json.fromJson(List.class, g.getOld_image_detail_path());
三 解析服務器返回的json
下面是服務器返回的json數據
{
"error_code": 1,
"description": "Tracking order on Speedlink system success",
"order": {
"detail": {
"order_no": "G00151138392",
"awb_tracking_no": "G00151138392",
"delivery_date": "17/03/2018 03:32pm",
"delivery_person": "huỳnh anh"
},
"tracking": [
{
"date_time": "2018-03-08 11:19:01",
"branch": "Cửa khẩu Nội Bài",
"hub": "Hà Nội",
"status": "Processing",
"status_vn": "Đang xử lý",
"description": "Confirmed booking",
"description_vn": "Đã nhận được yêu cầu lấy hàng"
},
{
"date_time": "2018-03-12 18:05:03",
"branch": "Hà Nội",
"hub": "Hà Nội",
"status": "InTransit",
"status_vn": "Trung chuyển",
"description": "Trung chuyển từ(Hà Nội đến Hồ Chí Minh)",
"description_vn": "In Transit from (Hà Nội to Hồ Chí Minh)"
}
]
}
}
下面是解析
(1)根據返回結果的格式,這裏我們新建一個javabean
public class SpeedlinkTrack extends BaseModel {
private String date_time;
private String branch;
private String hub;
private String status;
private String status_vn;
private String description;
private String description_vn;
}
下面是解析代碼的片段
JSONObject resultJson = JSONObject.parseObject(result);
if (!StringUtils.equals(resultJson.getString("error_code"), "1")) {
logger.error(remark + "失敗,單號爲:" + changeNo);
logger.error("錯誤報文:" + resultJson);
return;
}
JSONObject order = JSONObject.parseObject(resultJson.getString("order"));
JSONObject detail = JSONObject.parseObject(order.getString("detail"));
List<SpeedlinkTrack> trackList = JSONArray.parseArray(order.getString("tracking"), SpeedlinkTrack.class);
(2)不寫Javabean,直接解析
JSONObject jsonObject0 = JSONObject.parseObject(jsonObject.getString("data"));
String mailItems = jsonObject0.getString("mailItems");
JSONArray mailItemses = JSONArray.parseArray(mailItems);
String mailItem = mailItemses.getString(0);
JSONObject resultJson = JSONObject.parseObject(mailItem);
JSONArray events =JSONArray.parseArray(resultJson.getString("events"));
for (int i=0;i<events.size();i++) {
PS:這裏只是展示怎麼轉化數組和取數組的數據的方法,不對應解析上面數據格式。
EdiTrackdetail ediTrackdetail = new EdiTrackdetail();
JSONObject event = JSONObject.parseObject(events.getString(i));
ediTrackdetail.setEventLocation(event.getString("location"));
ediTrackdetail.setEventDetail(event.getString("description"));
}