android之json浅谈

在Android项目中跟后台交互式不可分离的,所以我们经常要实现客户端与后台之间进行信息交互,传统的利用xml对于当前中国的网络服务较为不便,因此json更适合我们实战使用。

(1)本地传送例子;Json在传数据的时候,它所传送的数据是Object对象,所以这方便了我们对数据的传送!

import com.alibaba.fastjson.JSON;

public class MyJson {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String[] hello ={"ss","dd"};
String json = JSON.toJSONString(hello);
System.out.print(json);
}

}

下面我将用一个简单的例子实现利用json来实现网络传输数据:

在附上代码之前我们要先熟悉网络编程的几种方式:Socket、ServerSocket、URL、HTTP、web Service、WebView几种网络编程。

首先介绍通过URL进行网络编程。它所针对的是:

HTTP进行网络编程。它所针对的是:

服务器端:

在此我封装了一个类,对此进行描述:

package com.panda.util;

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;

import android.util.Log;

import com.alibaba.fastjson.JSON;


public class DataBridge {
/**
* 请求指定地址,并将返回的数据返回为一个指定类型的集合
* @param action
* @param params
* @param clzz
* @return
* @throws Exception
*/
public static List executeToList(String action,Map<String,String> params,Class clzz) throws Exception{
action = Constant.basePath+File.separator+action;
String result = postConnection(action, params);
List list = JSON.parseArray(result, clzz);
return list;
}

/**
* 请求指定地址,并将返回的数据返回为一个指定类型的javabean对象9
* @param action 访问的url
* @param params 参数
* @param clzz 数据类型
* @return
* @throws Exception
*/
public static Object executeToObject(String action,Map<String,String> params,Class clzz) throws Exception{
action = Constant.basePath+File.separator+action;
String result = postConnection(action, params);
Object o =JSON.parseObject(result, clzz);
return o;
}
/**
* 请求指定定制,并返回字符串
* @param action
* @param params
* @return
* @throws Exception
*/
public static String executeToString(String action,Map<String,String> params) throws Exception{
action = Constant.basePath+File.separator+action;
String result = postConnection(action, params);
return result;
}

/**
* 根据URL得到输入流
* @param urlStr
* @return
*/
public static InputStream getInputStreamFromURL(String urlStr) {
HttpURLConnection urlConn = null;
InputStream inputStream = null;
try {
URL url = new URL(urlStr);
urlConn = (HttpURLConnection)url.openConnection();
inputStream = urlConn.getInputStream();

} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

return inputStream;
}

/**
* 使用http请求数据
* @throws Exception
*/
private static String postConnection(String action,Map<String,String> params) throws Exception {
Log.v("test", "postConnection....");
//1.建立一个支持Http协议的客户端对象
HttpClient hc = new DefaultHttpClient();
//2.建立一个post请求或者get请求
HttpPost hp = new HttpPost(action);
List<NameValuePair> nvps = null;
if(params != null){//有参数
//3.设置要提交的数据
nvps = new ArrayList<NameValuePair>();
Set set = params.keySet();
Iterator keys = set.iterator();
while(true){//循环的设置参数
if(keys.hasNext() == false)break;
String key = (String) keys.next();
nvps.add(new BasicNameValuePair(key,params.get(key)));
}
}
InputStream is = null;
String json = null;
try {
if(nvps != null){//有参数
hp.setEntity(new UrlEncodedFormEntity(nvps,HTTP.UTF_8));//设置发送参数,以及传输编码
}
//执行请求
HttpResponse hr = hc.execute(hp);
//获取服务端返回内容
HttpEntity he = hr.getEntity();
is = he.getContent();
BufferedReader br = new BufferedReader(new InputStreamReader(is,HTTP.UTF_8));
json = br.readLine();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
is.close();
}
return json;
}
}

客户端:

//根据自己的实际情况,编写自己的访问的服务器路径
String bathPath = "...";

//url:服务器端你所自定的url名

try{

//j接受数据

String json = DataBridge.executeToString("url",null);

//接下来是对接收数据所进行的处理

//......................

}catch(Exception e){

e.printStackTrace();

}

web Service进行网络编程。

webView视图进行网络编程。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值