java中Json數據和map數據的轉換&&解析服務器返回的json

(一). 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"));

        }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章