使用gson检索动态JSON并且retrofit返回null?

时间:2018-06-08 08:17:40

标签: json gson retrofit pojo android

我有一个动态嵌套对象的动态json,我创建了这些pojo,但model总是为NULL我不知道我做错了什么。

这是我的JSon

{
    "status": 200,
    "message": "Accepted, Ok",
    "model": {
        "مشخصات کلي": {
            "ابعاد": "125X98X76 ميلي متر",
            "وزن": "480 گرم",
            "ضد آب": false
        },
        "حسگر و تصوير": {
            "محدوده دقت حسگر": "20.0 مگاپيکسل و بيشتر",
            "نوع حسگر": "CMOS",
            "قطع حسگر": "Crop Frame",
            "ابعاد حسگر": "APS-C (23.5 x 15.6 mm)",
            "دقت حسگر": "25 مگاپيکسل",
            "دقت موثر حسگر": "24.2 مگاپيکسل",
            "حداکثر رزولوشن عکس": "6000X4000"
        },
        "لنز": {
            "محدوده زوم": "6 تا 10 برابر بزرگنمايي",
            "فاصله کانوني": "18-140 ميلي متر",
            "محدوده ديافراگم": "F/3.5-5.6",
            "بزرگ نمايي اپتيکال": "7.7 برابر",
            "لرزشگير تصوير": true
        },
        "فيلم": {
            "رزولوشن فيلم": "Full HD",
            "حداکثر سرعت فيلم": "60 فريم بر ثانيه",
            "فيلمبرداري سه بعدي": false
        }
    }
}

这里是相应的POJO:

public class ProductTechnicalResponse {
    @SerializedName("status")
    @Expose
    private Integer status;
    @SerializedName("message")
    @Expose
    private String message;
    @SerializedName("model")
    @Expose
    private Model model;
}


class Model {
    Map<String, Map<String,Object>> pairs;
}

1 个答案:

答案 0 :(得分:1)

将您的POJO更改为:

public function getChildren($parent) {
    $tree = Array();
    if (!empty($parent)) {
        $tree = Permission::where('status', 1)->where('parentid', $parent)->pluck('permissionid')->toArray();
        foreach ($tree as $key => $val) {
            $ids = self::getChildren($val);
            if(!empty($ids)){
                if(count($ids)>0) $tree = array_merge($tree, $ids);
            }
        }
    }
    return $tree;
}

模型是地图,而不是带地图的结构。