java - android 读取json 为什么不直接反序列化
伊谢尔伦
伊谢尔伦 2017-04-17 16:37:49
0
4
361

如题,为什么不直接创建json 对应的实体,再反序列化,然后直接拿到完整的对象。我看到一些人都是去遍历json 数组。。然后再封装。。不理解为什么要这样做,我不是搞android的,轻点拍我。

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

reply all(4)
伊谢尔伦

我们平时写的bean类,这个是指定规则的序列化对象,虚拟机认得,你说用json反序列化获取对象,这个规则是后台定的,虚拟机如何认得?

而且你说的,很多人一直遍历json字符串,然后一个字段一个字段的封装,超级麻烦,我也不知道他们为什么这么做?不管是解析成object对象还是list数据,我都有自己封装的工具,就两三行代码.
如下:

private static Gson sGson;

    public static Gson getGson() {
        if (null == sGson) {
            sGson = new Gson();
        }
        return sGson;
    }
/**
     * 将json字符串转换成一个对象
     *
     * @param jsonStr json字符串
     * @param field   字段名
     * @param clazz   字节码
     * @param <T>     类型
     * @return
     */
    public static <T> T getObject(String jsonStr, String field, Class<T> clazz) {
        JSONObject jsonObject = getJSONObject(jsonStr);
        T t = getGson().fromJson(jsonObject.optString(field), clazz);

        return t;
    }

    /**
     * 将json字符串转换成list数据
     *
     * @param json
     * @param clazz
     * @param <T>
     * @return
     */
    public static <T> List<T> getList(String json, Class<T> clazz) {

        List<T> list = null;

        list = JSON.parseArray(json, clazz);

        return list;
    }
    
     /**
     * 将json字符串转换成jsonObject
     *
     * @param jsonStr
     * @return
     */
    public static JSONObject getJSONObject(String jsonStr) {
        JSONObject mJson = new JSONObject();
        try {
            mJson = new JSONObject(jsonStr);
        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return mJson;
    }

这个是我个人的理解,也没有权威的认证过.

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!