后台返回的不是数据结构数组而是字符串

后台返回的数据格式有时候根据业务需求,往往不是前端需要的,一个接口甚至能给你返回8种数据结构。我遇到过,没办法只能是手动解析。这还好,起码能解析出来。下面的就不好弄了。

{
    "data": [
        {
            "id": "1",
            "tagSize": "50,50",
            "labelGap": "1",
            "labelDirection": "LabelCommand.DIRECTION.FORWARD, LabelCommand.MIRROR.NORMAL",
            "origin": "0,0",
            "tearOffMode": "EscCommand.ENABLE.ON",
            "labelText": "[{"font":"LabelCommand.FONTTYPE.FONT_10","rotation":"LabelCommand.ROTATION.ROTATION_0","Xscal":"LabelCommand.FONTMUL.MUL_1","Yscal":"LabelCommand.FONTMUL.MUL_1","text":"姓名:","x":"38","y":"20"},{"font":"LabelCommand.FONTTYPE.SIMPLIFIED_CHINESE","rotation":"LabelCommand.ROTATION.ROTATION_0","Xscal":"LabelCommand.FONTMUL.MUL_1","Yscal":"LabelCommand.FONTMUL.MUL_1","text":"血型:","x":"200","y":"20"},{"font":"LabelCommand.FONTTYPE.SIMPLIFIED_CHINESE","rotation":"LabelCommand.ROTATION.ROTATION_0","Xscal":"LabelCommand.FONTMUL.MUL_1","Yscal":"LabelCommand.FONTMUL.MUL_1","text":"岗位:","x":"38","y":"70"},{"font":"LabelCommand.FONTTYPE.SIMPLIFIED_CHINESE","rotation":"LabelCommand.ROTATION.ROTATION_0","Xscal":"LabelCommand.FONTMUL.MUL_1","Yscal":"LabelCommand.FONTMUL.MUL_1","text":"班长:","x":"200","y":"70"},{"font":"LabelCommand.FONTTYPE.SIMPLIFIED_CHINESE","rotation":"LabelCommand.ROTATION.ROTATION_0","Xscal":"LabelCommand.FONTMUL.MUL_1","Yscal":"LabelCommand.FONTMUL.MUL_1","text":"班长电话:","x":"38","y":"150"},{"font":"LabelCommand.FONTTYPE.SIMPLIFIED_CHINESE","rotation":"LabelCommand.ROTATION.ROTATION_0","Xscal":"LabelCommand.FONTMUL.MUL_1","Yscal":"LabelCommand.FONTMUL.MUL_1","text":"直属单位:","x":"38","y":"190"},{"font":"LabelCommand.FONTTYPE.SIMPLIFIED_CHINESE","rotation":"LabelCommand.ROTATION.ROTATION_0","Xscal":"LabelCommand.FONTMUL.MUL_1","Yscal":"LabelCommand.FONTMUL.MUL_1","text":"项目名称:","x":"35","y":"220"}]",
            "createdUserName": null,
            "createdUserId": null,
            "createdTime": null
        }
    ],
    "message": "获取成功",
    "status": "SUCCESS"
}

大家可以看到  labelText 这一项看起来像一个数组,其实是字符串。各种解析都木有办法。什么string转jsonobject,转jsonarray

各种报错。后台又说不好弄,好吧,是时候投机取巧了。既然后台给的是string那只能是咱们前段自己加点东西了

String json = "{\"code\":200,\"message\":\"ok\",\"detail\":" + mprint.get(0).getLabelText() + "}";

mprint.get(0).getLabelText()就是解析后返回的东西。

剩下的不用说了吧,直接解析

PrintTemplateBean最外层的bean,TextBean内部类。

代码:

package com.bean;

import org.json.JSONArray;
import org.json.JSONException;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by lake
 * 此类的功能:打印的模板
 */
public class PrintTemplateBean {

    /**
     * data : [{"id":"1","tagSize":"50,50","labelGap":"1","labelDirection":"LabelCommand.DIRECTION.FORWARD, LabelCommand.MIRROR.NORMAL","origin":"0,0","tearOffMode":"EscCommand.ENABLE.ON","labelText":"[{\"font\":\"LabelCommand.FONTTYPE.FONT_10\",\"rotation\":\"LabelCommand.ROTATION.ROTATION_0\",\"Xscal\":\"LabelCommand.FONTMUL.MUL_1\",\"Yscal\":\"LabelCommand.FONTMUL.MUL_1\",\"text\":\"姓名:\",\"x\":\"38\",\"y\":\"20\"},{\"font\":\"LabelCommand.FONTTYPE.SIMPLIFIED_CHINESE\",\"rotation\":\"LabelCommand.ROTATION.ROTATION_0\",\"Xscal\":\"LabelCommand.FONTMUL.MUL_1\",\"Yscal\":\"LabelCommand.FONTMUL.MUL_1\",\"text\":\"血型:\",\"x\":\"200\",\"y\":\"20\"},{\"font\":\"LabelCommand.FONTTYPE.SIMPLIFIED_CHINESE\",\"rotation\":\"LabelCommand.ROTATION.ROTATION_0\",\"Xscal\":\"LabelCommand.FONTMUL.MUL_1\",\"Yscal\":\"LabelCommand.FONTMUL.MUL_1\",\"text\":\"岗位:\",\"x\":\"38\",\"y\":\"70\"},{\"font\":\"LabelCommand.FONTTYPE.SIMPLIFIED_CHINESE\",\"rotation\":\"LabelCommand.ROTATION.ROTATION_0\",\"Xscal\":\"LabelCommand.FONTMUL.MUL_1\",\"Yscal\":\"LabelCommand.FONTMUL.MUL_1\",\"text\":\"班长:\",\"x\":\"200\",\"y\":\"70\"},{\"font\":\"LabelCommand.FONTTYPE.SIMPLIFIED_CHINESE\",\"rotation\":\"LabelCommand.ROTATION.ROTATION_0\",\"Xscal\":\"LabelCommand.FONTMUL.MUL_1\",\"Yscal\":\"LabelCommand.FONTMUL.MUL_1\",\"text\":\"班长电话:\",\"x\":\"38\",\"y\":\"150\"},{\"font\":\"LabelCommand.FONTTYPE.SIMPLIFIED_CHINESE\",\"rotation\":\"LabelCommand.ROTATION.ROTATION_0\",\"Xscal\":\"LabelCommand.FONTMUL.MUL_1\",\"Yscal\":\"LabelCommand.FONTMUL.MUL_1\",\"text\":\"直属单位:\",\"x\":\"38\",\"y\":\"190\"},{\"font\":\"LabelCommand.FONTTYPE.SIMPLIFIED_CHINESE\",\"rotation\":\"LabelCommand.ROTATION.ROTATION_0\",\"Xscal\":\"LabelCommand.FONTMUL.MUL_1\",\"Yscal\":\"LabelCommand.FONTMUL.MUL_1\",\"text\":\"项目名称:\",\"x\":\"35\",\"y\":\"220\"}]","createdUserName":null,"createdUserId":null,"createdTime":null}]
     * message : 获取成功
     * status : SUCCESS
     */

    private String message;
    private String status;
    private List<DataBean> data;

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public List<DataBean> getData() {
        return data;
    }

    public void setData(List<DataBean> data) {
        this.data = data;
    }

    public static class DataBean {
        /**
         * id : 1
         * tagSize : 50,50
         * labelGap : 1
         * labelDirection : LabelCommand.DIRECTION.FORWARD, LabelCommand.MIRROR.NORMAL
         * origin : 0,0
         * tearOffMode : EscCommand.ENABLE.ON
         * labelText : [{"font":"LabelCommand.FONTTYPE.FONT_10","rotation":"LabelCommand.ROTATION.ROTATION_0","Xscal":"LabelCommand.FONTMUL.MUL_1","Yscal":"LabelCommand.FONTMUL.MUL_1","text":"姓名:","x":"38","y":"20"},{"font":"LabelCommand.FONTTYPE.SIMPLIFIED_CHINESE","rotation":"LabelCommand.ROTATION.ROTATION_0","Xscal":"LabelCommand.FONTMUL.MUL_1","Yscal":"LabelCommand.FONTMUL.MUL_1","text":"血型:","x":"200","y":"20"},{"font":"LabelCommand.FONTTYPE.SIMPLIFIED_CHINESE","rotation":"LabelCommand.ROTATION.ROTATION_0","Xscal":"LabelCommand.FONTMUL.MUL_1","Yscal":"LabelCommand.FONTMUL.MUL_1","text":"岗位:","x":"38","y":"70"},{"font":"LabelCommand.FONTTYPE.SIMPLIFIED_CHINESE","rotation":"LabelCommand.ROTATION.ROTATION_0","Xscal":"LabelCommand.FONTMUL.MUL_1","Yscal":"LabelCommand.FONTMUL.MUL_1","text":"班长:","x":"200","y":"70"},{"font":"LabelCommand.FONTTYPE.SIMPLIFIED_CHINESE","rotation":"LabelCommand.ROTATION.ROTATION_0","Xscal":"LabelCommand.FONTMUL.MUL_1","Yscal":"LabelCommand.FONTMUL.MUL_1","text":"班长电话:","x":"38","y":"150"},{"font":"LabelCommand.FONTTYPE.SIMPLIFIED_CHINESE","rotation":"LabelCommand.ROTATION.ROTATION_0","Xscal":"LabelCommand.FONTMUL.MUL_1","Yscal":"LabelCommand.FONTMUL.MUL_1","text":"直属单位:","x":"38","y":"190"},{"font":"LabelCommand.FONTTYPE.SIMPLIFIED_CHINESE","rotation":"LabelCommand.ROTATION.ROTATION_0","Xscal":"LabelCommand.FONTMUL.MUL_1","Yscal":"LabelCommand.FONTMUL.MUL_1","text":"项目名称:","x":"35","y":"220"}]
         * createdUserName : null
         * createdUserId : null
         * createdTime : null
         */

        private String id;
        private String tagSize;
        private String labelGap;
        private String labelDirection;
        private String origin;
        private String tearOffMode;
        private String labelText;
        private Object createdUserName;
        private Object createdUserId;
        private Object createdTime;

        public String getId() {
            return id;
        }

        public void setId(String id) {
            this.id = id;
        }

        public String getTagSize() {
            return tagSize;
        }

        public void setTagSize(String tagSize) {
            this.tagSize = tagSize;
        }

        public String getLabelGap() {
            return labelGap;
        }

        public void setLabelGap(String labelGap) {
            this.labelGap = labelGap;
        }

        public String getLabelDirection() {
            return labelDirection;
        }

        public void setLabelDirection(String labelDirection) {
            this.labelDirection = labelDirection;
        }

        public String getOrigin() {
            return origin;
        }

        public void setOrigin(String origin) {
            this.origin = origin;
        }

        public String getTearOffMode() {
            return tearOffMode;
        }

        public void setTearOffMode(String tearOffMode) {
            this.tearOffMode = tearOffMode;
        }

        public String getLabelText() {
            return labelText;
        }

        public void setLabelText(String labelText) {
            this.labelText = labelText;
        }

        public Object getCreatedUserName() {
            return createdUserName;
        }

        public void setCreatedUserName(Object createdUserName) {
            this.createdUserName = createdUserName;
        }

        public Object getCreatedUserId() {
            return createdUserId;
        }

        public void setCreatedUserId(Object createdUserId) {
            this.createdUserId = createdUserId;
        }

        public Object getCreatedTime() {
            return createdTime;
        }

        public void setCreatedTime(Object createdTime) {
            this.createdTime = createdTime;
        }


        public void getPrintMsg() {
            List<TextBean> textBeans = new ArrayList<>();

            try {
                JSONArray jsonArray = new JSONArray(getLabelText());
                for (int i = 0; i < jsonArray.length(); i++) {
//                    String font = jsonArray.getJSONArray(0).length();
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }

        }


    }

    public static class TextBean {

        /**
         * code : 200
         * message : FAIL
         * detail : [{"font":"LabelCommand.FONTTYPE.FONT_10","rotation":"LabelCommand.ROTATION.ROTATION_0","Xscal":"LabelCommand.FONTMUL.MUL_1","Yscal":"LabelCommand.FONTMUL.MUL_1","text":"姓名:","x":"38","y":"20"},{"font":"LabelCommand.FONTTYPE.SIMPLIFIED_CHINESE","rotation":"LabelCommand.ROTATION.ROTATION_0","Xscal":"LabelCommand.FONTMUL.MUL_1","Yscal":"LabelCommand.FONTMUL.MUL_1","text":"血型:","x":"200","y":"20"},{"font":"LabelCommand.FONTTYPE.SIMPLIFIED_CHINESE","rotation":"LabelCommand.ROTATION.ROTATION_0","Xscal":"LabelCommand.FONTMUL.MUL_1","Yscal":"LabelCommand.FONTMUL.MUL_1","text":"岗位:","x":"38","y":"70"},{"font":"LabelCommand.FONTTYPE.SIMPLIFIED_CHINESE","rotation":"LabelCommand.ROTATION.ROTATION_0","Xscal":"LabelCommand.FONTMUL.MUL_1","Yscal":"LabelCommand.FONTMUL.MUL_1","text":"班长:","x":"200","y":"70"},{"font":"LabelCommand.FONTTYPE.SIMPLIFIED_CHINESE","rotation":"LabelCommand.ROTATION.ROTATION_0","Xscal":"LabelCommand.FONTMUL.MUL_1","Yscal":"LabelCommand.FONTMUL.MUL_1","text":"班长电话:","x":"38","y":"150"},{"font":"LabelCommand.FONTTYPE.SIMPLIFIED_CHINESE","rotation":"LabelCommand.ROTATION.ROTATION_0","Xscal":"LabelCommand.FONTMUL.MUL_1","Yscal":"LabelCommand.FONTMUL.MUL_1","text":"直属单位:","x":"38","y":"190"},{"font":"LabelCommand.FONTTYPE.SIMPLIFIED_CHINESE","rotation":"LabelCommand.ROTATION.ROTATION_0","Xscal":"LabelCommand.FONTMUL.MUL_1","Yscal":"LabelCommand.FONTMUL.MUL_1","text":"项目名称:","x":"35","y":"220"}]
         */

        private int code;
        private String message;
        private List<DetailBean> detail;

        public int getCode() {
            return code;
        }

        public void setCode(int code) {
            this.code = code;
        }

        public String getMessage() {
            return message;
        }

        public void setMessage(String message) {
            this.message = message;
        }

        public List<DetailBean> getDetail() {
            return detail;
        }

        public void setDetail(List<DetailBean> detail) {
            this.detail = detail;
        }

        public static class DetailBean {
            /**
             * font : LabelCommand.FONTTYPE.FONT_10
             * rotation : LabelCommand.ROTATION.ROTATION_0
             * Xscal : LabelCommand.FONTMUL.MUL_1
             * Yscal : LabelCommand.FONTMUL.MUL_1
             * text : 姓名:
             * x : 38
             * y : 20
             */

            private String font;
            private String rotation;
            private String Xscal;
            private String Yscal;
            private String text;
            private String x;
            private String y;

            public String getFont() {
                return font;
            }

            public void setFont(String font) {
                this.font = font;
            }

            public String getRotation() {
                return rotation;
            }

            public void setRotation(String rotation) {
                this.rotation = rotation;
            }

            public String getXscal() {
                return Xscal;
            }

            public void setXscal(String Xscal) {
                this.Xscal = Xscal;
            }

            public String getYscal() {
                return Yscal;
            }

            public void setYscal(String Yscal) {
                this.Yscal = Yscal;
            }

            public String getText() {
                return text;
            }

            public void setText(String text) {
                this.text = text;
            }

            public String getX() {
                return x;
            }

            public void setX(String x) {
                this.x = x;
            }

            public String getY() {
                return y;
            }

            public void setY(String y) {
                this.y = y;
            }
        }
    }
}

使用:

初始化:private List<PrintTemplateBean.TextBean.DetailBean> datas1 = new ArrayList<>(); //数据源
解析之后:
PrintTemplateBean.TextBean beanGoodscar = new Gson().fromJson(json, PrintTemplateBean.TextBean.class);
datas1 = beanGoodscar.getDetail();

 不过一般来讲,这种情况极少发生。

发布了95 篇原创文章 · 获赞 17 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/qq_30299243/article/details/99966216