Android Gson 操作

JSON序列化后的数据不带类名与名命空间,所以这两个服务端跟客户端可以不对应,需要保证字段对应即可

Asp.net MVC端

Android Gson 操作
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
Android Gson 操作
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
Android Gson 操作
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端

Android Gson 操作
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;



    }

}
View Code
Android 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);

        }

    }

}
View Code
Android Gson 操作
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
Android Gson 操作
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

 

Android Gson 操作
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)