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

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库。

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

时间: 2024-09-17 03:35:44

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

RapidJSON —— C++ 快速 JSON 解析器和生成器

Rapidjson 是一个 C++ 的快速 JSON 解析器和生成器,使用 SAX/DOM 风格的 API 设计. 示例代码: // rapidjson/example/simpledom/simpledom.cpp` #include "rapidjson/document.h" #include "rapidjson/writer.h" #include "rapidjson/stringbuffer.h" #include <iost

.NET 2.0 基础类库中的范型——范型集合

集合 范型集合毫无疑问,范型最典型的应用莫过于范型集合了.在 .NET 2.0 中提供了已有集合类和接口的范型版本,它们位于 System.Collections.Generic 命名空间中. .NET 2.0 中新的范型集合类并不是简单的在已有非范型集合类的设计上多加了个范型参数 T 而已.新的范型集合类的设计充分吸收了已有设计中的合理之处并摒弃了一些不甚合理之处,同时引入了新的针对范型的设计.所以,新的范型类和接口的设计应该更加合理和有效,不过 .NET 程序员则需要花些时间学习新的设计并了

Java自定义范型的应用技巧

我们在JAVA中处处都用到了范型,JAVA中的范型是从C++模板继承来的,不过JAVA的范型的功能远远没有C++那么强大. 我们知道在C++中模板可以很方便的代替任意类型的数据如下: template<class T> void show(T x) { cout<<x<<endl ; } 上面的T可以代表任意类型的数据,这样不是大大减少了函数的重载次数,提高了效率呢.java是从C++过来的,理解了C++,jav也不在话下. 在java中自定义范型也可以用在方法上如下:

安卓-困扰了我一天的一个android获取到的json解析问题,希望各位大大给指点一二!谢谢

问题描述 困扰了我一天的一个android获取到的json解析问题,希望各位大大给指点一二!谢谢 想问一下下边的json粗体部分应该怎么解析,"spec_name"里边的规格数量是不确定的,spec_value里边的也是根据spec_name里边的来处理的.请各位大神给指导一下,谢谢.不敲代码说一下思路也可以,谢谢. { "code": 200, "datas": { "goods_info": { "goods_n

Android JSON解析类 - JsonReader

 在Android 3.0 honeycomb开始提供了新的JSON解析类 - android.util.JsonReader,下面Android123以下面的JSON为例子[    {      "id": 912345678901,      "text": "How do I read JSON on Android?",      "geo": null,      "user": {       

Android随手笔记44之JSON数据解析_Android

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种理想的数据交换格式. 本文将主要介绍在Android开发中,如何在服务器端创建JSON数据,以及如何在Android客户端对JSON数据进行解析. 1.JSON数据结构 在JSON中有两种数据结构:对象和数组. 1.1对象 在JSON中,一个对象以"{"(左括号)开始,"}"(右括号)结束.每个"名称"

深入浅析Android JSON解析_Android

JSON语法 首先看JSON的语法和结构,这样我们才知道怎么去解析它.JSON语法时JavaScript对象表示语法的子集. JSON的值可以是: 数字(整数或者浮点数) 字符串(在双引号内) 逻辑值(true 或 false) 数组(使用方括号[]包围) 对象( 使用花括号{}包围) null JSON中有且只有两种结构:对象和数组. 1.对象:对象在js中表示为"{}"括起来的内容,数据结构为 {key:value,key:value,-}的键值对的结构,在面向对象的语言中,key

问个android json解析问题 麻烦大牛回答一下 谢谢!

问题描述 问个android json解析问题 麻烦大牛回答一下 谢谢! { "code": 200, "datas": { "banner_info": [ { "pic_name": "冬季名品-大牌季节日", "phone_pic_img": "" }, { "pic_name": "全套茶具专场-年终盛典", "

android客户端从服务器端获取json数据并解析的实现代码_Android

首先客户端从服务器端获取json数据 1.利用HttpUrlConnection 复制代码 代码如下: /**      * 从指定的URL中获取数组      * @param urlPath      * @return      * @throws Exception      */     public static String readParse(String urlPath) throws Exception {                  ByteArrayOutputSt