Android 一个类实现的 Json 解析 - 范型的有效利用,使其得以简化

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: Android 一个类实现的 Json 解析 - 范型的有效利用,使其得以简化 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循“署名-非商业用途-保持一致”创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作。

Android 一个类实现的 Json 解析 - 范型的有效利用,使其得以简化

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es)

本文遵循“署名-非商业用途-保持一致”创作公用协议

转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino否则,出自本博客的文章拒绝转载或再转载,谢谢合作。



这是在一家工作过四个月的比利时公司时写的。

当时忙于户口调动的事儿,仅做了两个项目,就离开了。

还是很感谢这家公司,户口的调动除了我的中级职称,也得到了这家公司老总的全力支持,遗憾没能给予她更多的回报。

再次感谢谢。


这里先挖个坑,后续有时间再填!


开始填坑:

package com.dday.dataaccesslayer.utils.helper;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Date;

import org.json.JSONException;
import org.json.JSONObject;

import android.content.Context;

import com.dday.dataaccesslayer.utils.StorageServiceFactory;
import com.google.gson.FieldNamingPolicy;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

public class JsonHelper {
	
	public static <T> T getEntityFromJson(String fromJsonStr, Class<T> classOfT) throws JSONException {
		
		GsonBuilder gsonb = new GsonBuilder();
		gsonb.setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE);
		DateDeserializer ds = new DateDeserializer();
		gsonb.registerTypeAdapter(Date.class, ds);
		Gson gson = gsonb.create();		
		JSONObject j = new JSONObject(fromJsonStr);		
		return gson.fromJson(j.toString(), classOfT);
	}
	
	public static <T> T getEntityFromInterStorage(Context context, String jsonFilePath, String charset, Class<T> classOfT) throws JSONException, FileNotFoundException, UnsupportedEncodingException, IOException {
		
		String jsonContent = InterStorageHelper.readInternal(context, jsonFilePath, charset);		
		return getEntityFromJson(jsonContent, classOfT);
	}

	public static <T> T getEntityFromInterStorage(Context context, String jsonFilePath, Class<T> classOfT) throws JSONException, FileNotFoundException, UnsupportedEncodingException, IOException {
		
		return getEntityFromInterStorage(context, jsonFilePath, "UTF-8", classOfT);
	}
	
	public static <T> T getEntityFromExterPrivateStorage(Context context, String jsonFilePath, String charset, Class<T> classOfT) throws JSONException, FileNotFoundException, UnsupportedEncodingException, IOException {
		
		String jsonContent = StorageServiceFactory.getSharedInstance().getExterStorageService(context).getPrivateFile(jsonFilePath, charset);
		return getEntityFromJson(jsonContent, classOfT);
	}

	public static <T> T getEntityFromExterPrivateStorage(Context context, String jsonFilePath, Class<T> classOfT) throws JSONException, FileNotFoundException, UnsupportedEncodingException, IOException {
		
		String jsonContent = StorageServiceFactory.getSharedInstance().getExterStorageService(context).getPrivateFile(jsonFilePath, "UTF-8");
		return getEntityFromJson(jsonContent, classOfT);
	}
}



此类用到了GSON库。

其中有一些其它相关类型,这里不便提供,仅供大家参考其中的逻辑。


目录
相关文章
|
1月前
|
SQL 存储 JSON
SQL,解析 json
SQL,解析 json
66 8
|
16天前
|
存储 Java API
详细解析HashMap、TreeMap、LinkedHashMap等实现类,帮助您更好地理解和应用Java Map。
【10月更文挑战第19天】深入剖析Java Map:不仅是高效存储键值对的数据结构,更是展现设计艺术的典范。本文从基本概念、设计艺术和使用技巧三个方面,详细解析HashMap、TreeMap、LinkedHashMap等实现类,帮助您更好地理解和应用Java Map。
35 3
|
1月前
|
开发工具 Android开发 iOS开发
深入解析安卓与iOS开发环境的优劣
【10月更文挑战第4天】 本文将深入探讨安卓和iOS两大主流移动操作系统的开发环境,从技术架构、开发工具、用户体验等方面进行详细比较。通过分析各自的优势和不足,帮助开发者更好地理解这两个平台的异同,从而为项目选择最合适的开发平台提供参考。
22 3
|
30天前
|
JSON 数据格式
用来返回Json数据格式的工具--通用类
用来返回Json数据格式的工具--通用类
17 1
|
11天前
|
安全 5G Android开发
安卓与iOS的较量:技术深度解析
【10月更文挑战第24天】 在移动操作系统领域,安卓和iOS无疑是两大巨头。本文将深入探讨这两个系统的技术特点、优势和不足,以及它们在未来可能的发展方向。我们将通过对比分析,帮助读者更好地理解这两个系统的本质和内涵,从而引发对移动操作系统未来发展的深思。
22 0
|
1月前
|
存储 编译器 数据安全/隐私保护
【C++篇】C++类与对象深度解析(四):初始化列表、类型转换与static成员详解2
【C++篇】C++类与对象深度解析(四):初始化列表、类型转换与static成员详解
29 3
|
1月前
|
编译器 C++
【C++篇】C++类与对象深度解析(四):初始化列表、类型转换与static成员详解1
【C++篇】C++类与对象深度解析(四):初始化列表、类型转换与static成员详解
44 3
|
30天前
|
程序员 开发者 Python
深度解析Python中的元编程:从装饰器到自定义类创建工具
【10月更文挑战第5天】在现代软件开发中,元编程是一种高级技术,它允许程序员编写能够生成或修改其他程序的代码。这使得开发者可以更灵活地控制和扩展他们的应用逻辑。Python作为一种动态类型语言,提供了丰富的元编程特性,如装饰器、元类以及动态函数和类的创建等。本文将深入探讨这些特性,并通过具体的代码示例来展示如何有效地利用它们。
32 0
|
1月前
|
安全 网络安全 Android开发
深度解析:利用Universal Links与Android App Links实现无缝网页至应用跳转的安全考量
【10月更文挑战第2天】在移动互联网时代,用户经常需要从网页无缝跳转到移动应用中。这种跳转不仅需要提供流畅的用户体验,还要确保安全性。本文将深入探讨如何利用Universal Links(仅限于iOS)和Android App Links技术实现这一目标,并分析其安全性。
182 0
|
1月前
|
JSON JavaScript API
商品详情数据接口解析返回的JSON数据(API接口整套流程)
商品详情数据接口解析返回的JSON数据是API接口使用中的一个重要环节,它涉及从发送请求到接收并处理响应的整个流程。以下是一个完整的API接口使用流程,包括如何解析返回的JSON数据:

推荐镜像

更多
下一篇
无影云桌面