Android Gson 操作
JSON序列化后的数据不带类名与名命空间,所以这两个服务端跟客户端可以不对应,需要保证字段对应即可
Asp.net MVC端
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; } }
}
}
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 = ; }
catch (Exception ex)
{
response.Code = -;
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(); 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 = ; }
catch (Exception ex)
{
response.Code = -;
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 = ; }
catch (Exception ex)
{
response.Code = -;
response.Msg = ex.Message;
}
return Json(response, "text/json", Encoding.UTF8, JsonRequestBehavior.AllowGet);
} }
}
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; }
}
}
}
android端
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> { @Override
public 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; }
}
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 block
throw 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,取得HttpResponse
HttpResponse 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);
}
}
}
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;
}
}
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;
}
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", ""));
String json = HttpClientUtil.get("http", "122.226.151.4", ,
"/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", ,
"/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", ,
"/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", ""));
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);
}
}
Android Gson 操作的更多相关文章
- Android 常用操作
0.android studios使用介绍 使用介绍 android studio 常用小技巧 网址 1.怎么样添加第三方库 方法一: 第一步:将第三方库以module的形式导入 第二步:选中要导入第 ...
- [Android Pro] 完美Android Cursor使用例子(Android数据库操作)
reference to : http://www.ablanxue.com/prone_10575_1.html 完美 Android Cursor使用例子(Android数据库操作),Androi ...
- Android – 学习操作NFC – 2
在<Android – 学习操作NFC – 1>说明了Android在处理NFC tag的机制.tag dispatch system的运作流程,以及三种ACTION_NDEF_DISCO ...
- JSON和GSON操作json数据
1,JSON操作json import net.sf.json.JSONArray; import net.sf.json.JSONObject; //json操作数据 public static S ...
- 【转】Android Gson的使用
Android Gson 2014 年 05 月 22 日 android 目前的客户端大都有和服务端进行交互,而数据的格式基本就是json了,于是在Android开发中就经常用到json解析,方便的 ...
- android 文件操作类简易总结
android 文件操作类(参考链接) http://www.cnblogs.com/menlsh/archive/2013/04/02/2997084.html package com.androi ...
- 为什么说android UI操作不是线程安全的
转载于:http://blog.csdn.net/lvxiangan/article/details/17218409#t2 UI线程及Android的单线程模型原则 使用Worker线程 Commu ...
- Android权限操作之uses-permission详解
本文实例讲述了Android权限操作之uses-permission.分享给大家供大家参考,具体如下: 我们在安装Android软件的时候,系统会提示该软件所需要的权限,相对于其他系统,android ...
- Java操作JSON数据(2)--Gson操作JSON数据
Gson是Google公司发布的一个开发源码的Java库,可用于将Java对象转换为JSON字符串,也可用于将JSON字符串转换为对应的Java对象.本介绍下Gson的基本使用方法,包括序列化和反序列 ...
随机推荐
- LeetCode OJ - Best Time to Buy and Sell Stock
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/xiezhihua120/article/details/32939749 Say you have ...
- mysql_use_result的使用
对于每个可以产生一个结果集的命令(比如select.show.describe, explain, check_table等等),发起mysql_query或者mysql_real_query之后,你 ...
- 【转】MFC消息处理(一)
原文网址:http://blog.csdn.net/hyhnoproblem/article/details/6182120 1.MFC窗口如何与AfxWndProc建立联系. 当一个新的CWnd派生 ...
- C#使用OpcNetApi.dll和OpcNetApi.Com.dll操作OPC
本人学习了一下.Net,恰好,51自学网,又要用这个.而网上很多VC6,VB6,VB .Net的但,很少C#的.现在研究一下,给出例子: 测试平台,是VS2008,KEPServer,OpcNetAp ...
- PYTHON 常用API ***
1.类型判断 data = b'' data = bytes() print (type(data)) #<class 'bytes'> isinstance(123,int) if ty ...
- Java 将指定字符串连接到此字符串的结尾 concat()
Java 手册 concat public String concat(String str) 将指定字符串连接到此字符串的结尾. 如果参数字符串的长度为 0,则返回此 String 对象.否则,创建 ...
- HDU 2199 Can you solve this equation?(二分精度)
HDU 2199 Can you solve this equation? Now,given the equation 8*x^4 + 7*x^3 + 2*x^2 + 3*x + 6 == ...
- [转][ASP.net]后台页面刷新
三种后台刷新页面的方法: // 刷新方法一 Response.AddHeader("); // 刷新方法二 Response.Write("<script language= ...
- Zookeeper客户端 CuratorFramework使用
CuratorFramework使用 跟着实例学习ZooKeeper的用法: Curator框架应用 ZooKeeper客户端Curator使用一 创建连接
- sql之强制索引
1.今天我遇到一个问题,在处理百万级数据查询的时候,一般查询会很慢. 2.第一时间想到是建立联合索引,但是数据库存在多条索引的情况下,索引的执行是全部执行. 3.所以这里要按照特定的索引执行,就必须使 ...