Android Gson 操作
JSON序列化后的数据不带类名与名命空间,所以这两个服务端跟客户端可以不对应,需要保证字段对应即可
Asp.net MVC端
![](/assets/blank.gif)
![](/assets/blank.gif)
using System; using System.Collections.Generic; using System.Linq; using System.Web;namespace cn.fstudio.hessian.dto {public class ResponseBase<T>{private int code;private string msg;private T model;public int Code{get { return code; }set { code = value; }}public string Msg{get { return msg; }set { msg = value; }}public T Model{get { return model; }set { model = value; }}} }
View Code
![](/assets/blank.gif)
![](/assets/blank.gif)
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using cn.fstudio.hessian.dto; using cn.fstudio.update.model; using AA.DAO; using System.Text; using EmitMapper; namespace AA.Web.Controllers {public class SoftController : Controller{//// GET: /Soft//// <summary>/// 获取列表/// </summary>/// <returns></returns>public ActionResult Index(){var response = new ResponseBase<List<SoftInfo>>();try{using (var ctx = DBCtx.GetCtx()){response.Model= ObjectMapperManager.DefaultInstance.GetMapper<List<Base_Soft>,List<SoftInfo>>().Map(ctx.Base_Soft.ToList());}response.Code = 0;}catch (Exception ex){response.Code = -1;response.Msg = ex.Message;}return Json(response,"text/json",Encoding.UTF8,JsonRequestBehavior.AllowGet );}public ActionResult GetApp(String id,String v){using (var ctx = DBCtx.GetCtx()){int softId=int.Parse(id);var q = ctx.Base_SoftVersion.Where(ent => ent.SoftId == softId);if (!String.IsNullOrWhiteSpace(v)){q = q.Where(ent => ent.VersionCode == v);}q = q.OrderByDescending(ent => ent.VersionCode).Take(1);var it= q.FirstOrDefault();if (it == null){throw new Exception("未找到该软件!");}var soft= ctx.Base_Soft.FirstOrDefault(ent => ent.SoftId == softId);return File(Server.MapPath(it.Path), "application/vnd.android", Url.Encode(string.Format("{0}_{1}.apk",soft.FileName,it.VersionCode)));}}public ActionResult AppVers(String id){var response = new ResponseBase<List<SoftVersionInfo>>();try{using (var ctx = DBCtx.GetCtx()){var list= ctx.ExecuteStoreQuery<SoftVersionInfo>("Select SoftId,RecId,VersionName,VersionCode,AddTime From Base_SoftVersion Where SoftId={0} order by versionCode desc",id).ToList();response.Model = list;}response.Code = 0;}catch (Exception ex){response.Code = -1;response.Msg = ex.Message;}return Json(response, "text/json", Encoding.UTF8, JsonRequestBehavior.AllowGet);}public ActionResult AppLastVer(String id){var response = new ResponseBase<SoftVersionInfo>();try{using (var ctx = DBCtx.GetCtx()){var it = ctx.ExecuteStoreQuery<SoftVersionInfo>("Select Top 1 SoftId,RecId,VersionName,VersionCode,AddTime From Base_SoftVersion Where SoftId={0} order by versionCode desc,RecId desc", id).FirstOrDefault();response.Model = it;}response.Code = 0;}catch (Exception ex){response.Code = -1;response.Msg = ex.Message;}return Json(response, "text/json", Encoding.UTF8, JsonRequestBehavior.AllowGet);}} }
View Code
![](/assets/blank.gif)
![](/assets/blank.gif)
using System; using System.Collections.Generic; using System.Linq; using System.Web;namespace cn.fstudio.update.model {public class SoftInfo{private int softId;private string softName;private string versionName;private string versionCode;private DateTime addTime;private DateTime lastTime;private string memo;private int recId;private String fileName;public String FileName{get { return fileName; }set { fileName = value; }}/// <summary>/// SoftId/// </summary> public int SoftId{get { return softId; }set { softId = value; }}/// <summary>/// SoftName/// </summary> public string SoftName{get { return softName; }set { softName = value; }}/// <summary>/// VersionName/// </summary> public string VersionName{get { return versionName; }set { versionName = value; }}/// <summary>/// VersionCode/// </summary> public string VersionCode{get { return versionCode; }set { versionCode = value; }}/// <summary>/// AddTime/// </summary> public DateTime AddTime{get { return addTime; }set { addTime = value; }}/// <summary>/// LastTime/// </summary> public DateTime LastTime{get { return lastTime; }set { lastTime = value; }}/// <summary>/// Memo/// </summary> public string Memo{get { return memo; }set { memo = value; }}/// <summary>/// RecId/// </summary> public int RecId{get { return recId; }set { recId = value; }} } }
View Code
android端
![](/assets/blank.gif)
![](/assets/blank.gif)
package cn.fstudio.update;import java.lang.reflect.Type; import java.util.Date; import java.util.regex.Matcher; import java.util.regex.Pattern;import com.google.gson.FieldNamingPolicy; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonDeserializationContext; import com.google.gson.JsonDeserializer; import com.google.gson.JsonElement; import com.google.gson.JsonParseException;public class GsonUtil {public static class DateDeserializer implements JsonDeserializer<Date> {@Overridepublic Date deserialize(JsonElement json, Type typeOfT,JsonDeserializationContext context) throws JsonParseException {String JSONDateToMilliseconds = "/Date\\((.*?)\\)/";Pattern pattern = Pattern.compile(JSONDateToMilliseconds);String value = json.getAsJsonPrimitive().getAsString();Matcher matcher = pattern.matcher(value);String result = matcher.replaceAll("$1");return new Date(new Long(result));}}public static Gson getGson() {GsonBuilder gsonb = new GsonBuilder();DateDeserializer ds = new DateDeserializer();gsonb.registerTypeAdapter(Date.class, ds);gsonb.setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE);Gson gson = gsonb.create();return gson;} }
View Code
![](/assets/blank.gif)
![](/assets/blank.gif)
package cn.fstudio.util;import java.net.URI; import java.net.URISyntaxException; import java.util.ArrayList; import java.util.List;import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.apache.http.NameValuePair; import org.apache.http.client.CookieStore; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.protocol.ClientContext; import org.apache.http.client.utils.URIUtils; import org.apache.http.client.utils.URLEncodedUtils; import org.apache.http.impl.client.BasicCookieStore; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.protocol.BasicHttpContext; import org.apache.http.protocol.HttpContext; import org.apache.http.util.EntityUtils;import android.R.string; import android.util.Log;public class HttpClientUtil {private static HttpContext httpContext;static {// 创建一个本地Cookie存储的实例CookieStore cookieStore = new BasicCookieStore();// 创建一个本地上下文信息httpContext = new BasicHttpContext();// 在本地上下问中绑定一个本地存储 httpContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore);}public static String get(String baseUrl,String path,List<NameValuePair> qparams){try {URI uri=new URI(baseUrl);return get(uri.getScheme(), uri.getHost(), uri.getPort(), path, qparams);} catch (URISyntaxException e) {// TODO Auto-generated catch blockthrow new RuntimeException(e);}}public static String get(String scheme,String host,int port,String path, List<NameValuePair> qparams){URI uri=null;try {if(qparams==null)qparams=new ArrayList<NameValuePair>();uri = URIUtils.createURI(scheme, host, port, path, URLEncodedUtils.format(qparams, "UTF-8"), null);Log.d("Test", uri.toString());return get(uri.toString());} catch (URISyntaxException e) {throw new RuntimeException(e);}}public static String get(String url){try {// HttpGet连接对象HttpGet httpRequest = new HttpGet(url);// 取得HttpClient对象HttpClient httpClient = new DefaultHttpClient();// 请求HttpClient,取得HttpResponseHttpResponse httpResponse = httpClient.execute(httpRequest,httpContext); // for (org.apache.http.Header h : httpResponse.getAllHeaders()) { // Log.d("Test",h.getName()); // }// 请求成功int statusCode=httpResponse.getStatusLine().getStatusCode();if ( statusCode == HttpStatus.SC_OK) {HttpEntity entity=httpResponse.getEntity();// 取得返回的字符串String strResult = EntityUtils.toString(entity);entity.consumeContent();////httpClient.getConnectionManager().shutdown();return strResult;} throw new RuntimeException("网络请求执行错误,响应码:" +statusCode);} catch (Exception e) {throw new RuntimeException(e);}} }
View Code
![](/assets/blank.gif)
![](/assets/blank.gif)
package cn.fstudio.update;import java.io.Serializable; import java.util.Date;public class SoftInfo implements Serializable {/*** */private static final long serialVersionUID = 1L;private int softId;private String softName;private String versionName;private String versionCode;private Date addTime;private Date lastTime;private String memo;private int recId;private String fileName;public int getSoftId() {return softId;}public void setSoftId(int softId) {this.softId = softId;}public String getSoftName() {return softName;}public void setSoftName(String softName) {this.softName = softName;}public String getVersionName() {return versionName;}public void setVersionName(String versionName) {this.versionName = versionName;}public String getVersionCode() {return versionCode;}public void setVersionCode(String versionCode) {this.versionCode = versionCode;}public Date getAddTime() {return addTime;}public void setAddTime(Date addTime) {this.addTime = addTime;}public Date getLastTime() {return lastTime;}public void setLastTime(Date lastTime) {this.lastTime = lastTime;}public String getMemo() {return memo;}public void setMemo(String memo) {this.memo = memo;}public int getRecId() {return recId;}public void setRecId(int recId) {this.recId = recId;}public String getFileName() {return fileName;}public void setFileName(String fileName) {this.fileName = fileName;}public static long getSerialversionuid() {return serialVersionUID;} }
View Code
![](/assets/blank.gif)
![](/assets/blank.gif)
package cn.fstudio.update;import java.io.Serializable;public class ResponseBase<T> implements Serializable{private static final long serialVersionUID = 1L;public int getCode() {return code;}public void setCode(int code) {this.code = code;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}public T getModel() {return model;}public void setModel(T model) {this.model = model;}private int code;private String msg;private T model; }
View Code
![](/assets/blank.gif)
![](/assets/blank.gif)
package cn.fstudio.test;import java.lang.reflect.Type; import java.util.ArrayList; import java.util.List;import org.apache.http.NameValuePair; import org.apache.http.message.BasicNameValuePair;import com.google.gson.Gson; import com.google.gson.reflect.TypeToken;import android.util.Log; import cn.fstudio.update.GsonUtil; import cn.fstudio.update.ResponseBase; import cn.fstudio.update.SoftInfo;import cn.fstudio.update.SoftVersionInfo; import cn.fstudio.util.HttpClientUtil; import junit.framework.TestCase;public class UpdateTest extends TestCase {final String TAG = "Test";public void testHttpClient() {List<NameValuePair> qparams = new ArrayList<NameValuePair>();qparams.add(new BasicNameValuePair("id", "8"));String json = HttpClientUtil.get("http", "122.226.151.4", 7086,"/soft/AppLastVer", qparams);Type type = new TypeToken<ResponseBase<SoftVersionInfo>>(){}.getType();Gson gson=GsonUtil.getGson();ResponseBase<SoftVersionInfo> response= gson.fromJson(json, type);Log.d(TAG, json);}public void testSoft() {String json = HttpClientUtil.get("http", "122.226.151.4", 7086,"/soft/", null);Gson gson=GsonUtil.getGson();Type type = new TypeToken<ResponseBase<List<SoftInfo>>>(){}.getType();ResponseBase<List<SoftInfo>> response= gson.fromJson(json, type);Log.d(TAG, json);}public void testAppVers() {List<NameValuePair> qparams = new ArrayList<NameValuePair>();qparams.add(new BasicNameValuePair("id", "22a"));String json = HttpClientUtil.get("http", "122.226.151.4", 7086,"/soft/appVers", qparams);Gson gson=GsonUtil.getGson();Type type = new TypeToken<ResponseBase<List<SoftVersionInfo>>>(){}.getType();ResponseBase<List<SoftVersionInfo>> response= gson.fromJson(json, type);Log.d(TAG, json);}public void testAppLastVer() {List<NameValuePair> qparams = new ArrayList<NameValuePair>();qparams.add(new BasicNameValuePair("id", "8"));String json = HttpClientUtil.get("http://122.226.151.4:7086/","/soft/appLastVer", qparams);Gson gson=GsonUtil.getGson();Type type = new TypeToken<ResponseBase<SoftVersionInfo>>(){}.getType();ResponseBase<SoftVersionInfo> response= gson.fromJson(json, type);Log.d(TAG, json);} }
View Code
Android Gson 操作相关推荐
- Android 常用操作
0.android studios使用介绍 使用介绍 android studio 常用小技巧 网址 1.怎么样添加第三方库 方法一:第一步:将第三方库以module的形式导入 第二步:选中要导入第三 ...
- Android Gson在Kotlin data class中的使用
文章目录 Android Gson在Kotlin data class中的使用 基本使用 NEP 空指针异常问题 空指针异常产生的原因 空安全失效问题 字段全有默认值 字段部分有默认值 解决问题 使用 ...
- Android 文件操作
Android 文件操作操作时,要赋予相应的权限: <uses-permission android:name="android.permission.WRITE_EXTERNAL_S ...
- Android SDCard操作(文件读写,容量计算)
Android SDCard操作(文件读写,容量计算) android.os.Environment 提供访问环境变量 java.lang.Object android.os.Environment ...
- android的文件操作,Android文件操作概要1.ppt
Android文件操作概要1 Linux文件系统 在Linux中,文件的扩展名并不重要,一个文件是否可以访问或执行,是完全由文件属性来决定的.细心的读者会发现最后一列比较特殊,这一列描述的是Linux ...
- android jxl.jar 使用,使用jxl.jar在Android中操作Excel表格——重中之重——对隐藏表的处理...
曾简单了解过C#,将Excel(数据库表)表中的数据导入到C#中,使用C#制作的图形化界面进行对Excel表中数据进行操作. 今天想试试,在Android中导入Excel表格进行操作.在网上查阅资料, ...
- Android数据库操作-1
Android采用关系型数据库SQLite3,它是一个支持SQL轻量级的嵌入式数据库,在嵌入式操作系统上有很广泛的应用,WM采用的也是SQLite3<?xml:namespace prefix ...
- Android自定义操作栏示例教程
In this tutorial we will create an app that consists of Android Custom Action Bar with a custom layo ...
- Android键盘操作的函数:onKeyDown, onKeyUp, on, onKeyMultiple
android Activity类onKeyUp() ,onKeyDown 略读 Activity.onKeyDown(); 当某个键被按下时会触发,但不会被任何的该Activity内的任何view处 ...
最新文章
- Python系列教程之学生信息管理系统
- linux消息队列非亲缘,linux进程
- PAT甲级1132 Cut Integer:[C++题解]
- Java Applet读写client串口——终极篇
- php发送验证图片,php生成图片验证码_PHP教程
- Orleans解决并发之痛(二):Grain状态
- 多个集合中的共同和独特元素
- linux搭建交叉编译器,手把手教你一步一步搭建mips-linux-gcc-4.4.0交叉编译工具
- 自定义一个月份选择器插件
- RNN, Seq2Seq, Attention注意力机制完全解析
- .NET性能分析最佳实践之:如何找出使用过多内存的.NET代码(基础篇)
- android 取消多个闹钟,如何在android中取消闹钟
- 信息学奥赛 python 教程_NOIP信息学竞赛入门小经验
- 弘辽科技:97年农村娃拼多多上卖大虾,带领全村人致富!
- 网站跳出率是什么?如何降低网站跳出率?
- 5. Podspec 文件分析
- [国家集训队]阿狸和桃子的游戏(贪心)
- vue使用高德地图小demo(标记点,画线,3D,叠加图片图层)
- 京东评论情感分类器(基于bag-of-words模型)
- Python爬取人民网夜读文案
热门文章
- Spring Security技术栈学习笔记(十四)使用Spring Social集成QQ登录验证方式
- 百度地图使用(保姆式教学)
- 7月Python和机器学习最佳开源项目Top 10!都在收藏!
- 服务器磁盘格式化显示灰色的,磁盘管理里的格式化选项是灰色的怎么处理?
- 云风Skynet——skynet非官方网站
- 计算机网络多元化媒体传达,网页版式设计的特征及其视觉元素
- C++ pair的比较大小
- 声卡是组成多媒体电脑必不可少的
- 【比赛回顾】广工2020程序设计决赛——排解忧伤
- 你不会还在机械重复的输入格式化信息吧?snippet配置来帮你一键生成