Android 使用fastjson解析json,java数组判断为空的方法

本例json解析使用的框架是fastjson。

在app下的build.gradle的dependencies中添加

compile 'com.alibaba:fastjson:1.2.21'
要解析的json文件:

{
    "image_id": "74DulsVcu706PdIPFUGxRcUq3pyPwJEqO6PKzdin",
    "faces": [
        {
            "id": "74DulsVcu706PdIPFUGxRcUq3pyPwJEqO6PKzdin",
            "rect": {
                "x": 200,
                "y": 135,
                "w": 229,
                "h": 229
            },
            "attributes": {
                "age": 35,
                "expression": [
                    {
                        "kind": "Happy",
                        "probability": 0.9751
                    }
                ],
                "gender": [
                    {
                        "kind": "female",
                        "probability": 0.9059
                    }
                ],
                "race": [
                    {
                        "kind": "black/brown",
                        "probability": 0.5208
                    },
                    {
                        "kind": "white",
                        "probability": 0.4787
                    },
                    {
                        "kind": "yellow",
                        "probability": 0.0004
                    }
                ],
                "pose": {
                    "yaw": 45.1,
                    "roll": 10.4,
                    "pitch": 12
                },
                "quality": 59
            }
        },
        {}, ...
    ],
    "final_time": 590
}

JSONObject jsonRes = JSON.parseObject(json);//把java对象转换为json对象
            JSONArray facesArr = jsonRes.getJSONArray("faces");
            if(facesArr != null && facesArr.size() > 0) {
                for (int i = 0; i < facesArr.size(); i++) {
                    JSONObject jsonObjArr = facesArr.getJSONObject(i);
                    String faceId = jsonObjArr.getString("id");
                    Log.e("faceId:", faceId);

                    JSONObject attributesJsonObj = jsonObjArr.getJSONObject("attributes");
                    String ageStr = attributesJsonObj.getString("age");
                    tvAge.setText("年龄:" + ageStr);

                    JSONArray expressionJsonArr = attributesJsonObj.getJSONArray("expression");
                    JSONObject expressionJsonObj = expressionJsonArr.getJSONObject(0);
                    String expressionStr = expressionJsonObj.getString("kind");
                    tvExpression.setText("表情:" + expressionStr);

                    JSONArray genderJsonArr = attributesJsonObj.getJSONArray("gender");
                    JSONObject genderJsonObj = genderJsonArr.getJSONObject(0);
                    String genderStr = genderJsonObj.getString("kind");
                    if ("male".equalsIgnoreCase(genderStr)) {
                        tvGender.setText("性别:男");
                    } else {
                        tvGender.setText("性别:女");
                    }

                    JSONArray raceJsonArr = attributesJsonObj.getJSONArray("race");
//                for (int m = 0;m < raceJsonArr.size();m++){
                    JSONObject raceJsonObj = raceJsonArr.getJSONObject(0);
                    String raceStr = raceJsonObj.getString("kind");
                    if ("yellow".equalsIgnoreCase(raceStr)) {
                        tvRace.setText("人种:黄种人");
                    } else if ("white".equalsIgnoreCase(raceStr)) {
                        tvRace.setText("人种:白种人");
                    } else {
                        tvRace.setText("人种:黑/棕种人");
                    }
//                }

                    String qualityStr = attributesJsonObj.getString("quality");
                    tvQuality.setText("质量:" + qualityStr);
                }
            }else if(facesArr == null || facesArr.size() == 0) {
                Toast.makeText(MainActivity.this, "图片中没有人脸,请重新拍摄", Toast.LENGTH_LONG).show();
            }

数组判断为空的方法:

facesArr != null && facesArr.size() > 0  //数组不为空
facesArr == null || facesArr.size() == 0 //数组为空




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值