--------------------------------------------AndroidManifest.xml---------------------------------

<manifestxmlns:android="http://schemas.android.com/apk/res/android"

package="com.kawa.ch32"

android:versionCode="1"

android:versionName="1.0">

<uses-sdk

android:minSdkVersion="8"

android:targetSdkVersion="15"/>

<!--网络权限-->

<uses-permissionandroid:name="android.permission.INTERNET"/>

<application

android:icon="@drawable/ic_launcher"

android:label="@string/app_name"

android:theme="@style/AppTheme">

<activity

android:name=".MainActivity"

android:label="@string/title_activity_main">

<intent-filter>

<actionandroid:name="android.intent.action.MAIN"/>

<categoryandroid:name="android.intent.category.LAUNCHER"/>

</intent-filter>

</activity>

</application>

</manifest>

--------------------------------------------activity_main.xml------------------------------------

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:id="@+id/LinearLayout1"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical">

<Button

android:id="@+id/btn1"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="getJSONArray"/>

<Button

android:id="@+id/btn2"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="getJSONObject"/>

<Button

android:id="@+id/btn3"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="getJSON"/>

</LinearLayout>

--------------------------------------------MainActivity.java--------------------------------------

packagecom.kawa.ch32;

importjava.util.List;

importjava.util.Map;

importandroid.app.Activity;

importandroid.app.AlertDialog;

importandroid.os.Bundle;

importandroid.view.View;

importandroid.view.View.OnClickListener;

importandroid.widget.Button;

importcom.kawa.ch32.util.JsonUtil;

publicclassMainActivityextendsActivity{

privateButtonbtn_array;

privateButtonbtn_object;

privateButtonbtn_json;

privateStringURL_JSONARRAY="http://192.168.1.105:8080/com.kawa.ch32.web/JSONArray";

privateStringURL_JSONOBJECT="http://192.168.1.105:8080/com.kawa.ch32.web/JSONObject";

privateStringURL_JSON="http://192.168.1.105:8080/com.kawa.ch32.web/JSON";

@Override

publicvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

findViews();

setListeners();

}

privatevoidfindViews(){

btn_array=(Button)findViewById(R.id.btn1);

btn_object=(Button)findViewById(R.id.btn2);

btn_json=(Button)findViewById(R.id.btn3);

}

privatevoidsetListeners(){

btn_array.setOnClickListener(onClickListener);

btn_object.setOnClickListener(onClickListener);

btn_json.setOnClickListener(onClickListener);

}

privateOnClickListeneronClickListener=newOnClickListener(){

@Override

publicvoidonClick(Viewview){

switch(view.getId()){

caseR.id.btn1:

try{

showResult(JsonUtil.getJSONArray(URL_JSONARRAY));

}catch(Exceptione1){

e1.printStackTrace();

}

break;

caseR.id.btn2:

try{

showResult(JsonUtil.getJSONObject(URL_JSONOBJECT));

}catch(Exceptione){

e.printStackTrace();

}

break;

caseR.id.btn3:

try{

showResult(JsonUtil.getJSON(URL_JSON));

}catch(Exceptione){

e.printStackTrace();

}

break;

}

}

};

privatevoidshowResult(List<Map<String,String>>jsonList){

StringBufferresult=newStringBuffer();

try{

for(Map<String,String>map:jsonList){

Stringid=map.get("id");

Stringname=map.get("name");

result.append(id).append("--").append(name);

}

newAlertDialog.Builder(this).setTitle("json")

.setMessage(result.toString()).setPositiveButton("ok",null).show();

}catch(Exceptione){

e.printStackTrace();

}

}

}

--------------------------------------------JsonUtil.java------------------------------------------

packagecom.kawa.ch32.util;

importjava.io.ByteArrayOutputStream;

importjava.io.InputStream;

importjava.net.*;

importjava.util.ArrayList;

importjava.util.HashMap;

importjava.util.List;

importjava.util.Map;

importorg.json.JSONArray;

importorg.json.JSONObject;

importandroid.util.Log;

publicclassJsonUtil{

/**

*获取"数组形式"的JSON数据,

*数据形式:[{"id":1,"name":"小猪"},{"id":2,"name":"小猫"}]

*@parampath网页路径

*@return返回List

*@throwsException

*/

publicstaticList<Map<String,String>>getJSONArray(Stringpath)

throwsException{

Stringjson=null;

List<Map<String,String>>list=newArrayList<Map<String,String>>();

Map<String,String>map=null;

URLurl=newURL(path);

//利用HttpURLConnection对象,我们可以从网络中获取网页数据.

HttpURLConnectionconn=(HttpURLConnection)url.openConnection();

//单位是毫秒,设置超时时间为5秒

conn.setConnectTimeout(5*1000);

//HttpURLConnection是通过HTTP协议请求path路径的,所以需要设置请求方式,可以不设置,因为默认为GET

conn.setRequestMethod("GET");

//判断请求码是否是200码,否则失败

if(conn.getResponseCode()==200){

InputStreamis=conn.getInputStream();//获取输入流

byte[]data=readStream(is);//把输入流转换成字符数组

json=newString(data);//把字符数组转换成字符串

//数据形式:[{"id":1,"name":"小猪","age":22},{"id":2,"name":"小猫","age":23}]

//数据直接为一个数组形式,所以可以直接用android提供的框架JSONArray读取JSON数据,转换成Array

JSONArrayjsonArray=newJSONArray(json);

for(inti=0;i<jsonArray.length();i++){

//每条记录又由几个Object对象组成

JSONObjectitem=jsonArray.getJSONObject(i);

intid=item.getInt("id");//获取对象对应的值

Stringname=item.getString("name");

map=newHashMap<String,String>();//存放到MAP里面

map.put("id",id+"");

map.put("name",name);

list.add(map);

}

}

returnlist;

}

/**

*获取"对象形式"的JSON数据,

*数据形式:{"total":2,"success":true,"arrayData":[{"id":1,"name":"小猪"},{"id":2,"name":"小猫"}]}

*@parampath网页路径

*@return返回List

*@throwsException

*/

publicstaticList<Map<String,String>>getJSONObject(Stringpath)

throwsException{

List<Map<String,String>>list=newArrayList<Map<String,String>>();

Map<String,String>map=null;

URLurl=newURL(path);

//利用HttpURLConnection对象,我们可以从网络中获取网页数据

HttpURLConnectionconn=(HttpURLConnection)url.openConnection();

conn.setConnectTimeout(5*1000);//单位是毫秒,设置超时时间为5秒

//HttpURLConnection是通过HTTP协议请求path路径的,所以需要设置请求方式,可以不设置,因为默认为GET

conn.setRequestMethod("GET");

//判断请求码是否是200码,否则失败

if(conn.getResponseCode()==200){

InputStreamis=conn.getInputStream();//获取输入流

byte[]data=readStream(is);//把输入流转换成字符数组

Stringjson=newString(data);//把字符数组转换成字符串

//数据形式:{"total":2,"success":true,"arrayData":[{"id":1,"name":"小猪"},{"id":2,"name":"小猫"}]}

//返回的数据形式是一个Object类型,所以可以直接转换成一个Object

JSONObjectjsonObject=newJSONObject(json);

inttotal=jsonObject.getInt("total");

Booleansuccess=jsonObject.getBoolean("success");

//里面有一个数组数据,可以用getJSONArray获取数组

JSONArrayjsonArray=jsonObject.getJSONArray("arrayData");

for(inti=0;i<jsonArray.length();i++){

JSONObjectitem=jsonArray.getJSONObject(i);//得到每个对象

intid=item.getInt("id");//获取对象对应的值

Stringname=item.getString("name");

map=newHashMap<String,String>();//存放到MAP里面

map.put("id",id+"");

map.put("name",name);

list.add(map);

}

}

returnlist;

}

/**

*获取类型复杂的JSON数据

*数据形式:

{"name":"小猪",

"age":23,

"content":{"questionsTotal":2,

"questions":[{"question":"what'syourname?","answer":"小猪"},

{"question":"what'syourage","answer":"23"}]

}

}

*@parampath网页路径

*@return返回List

*@throwsException

*/

publicstaticList<Map<String,String>>getJSON(Stringpath)throwsException{

List<Map<String,String>>list=newArrayList<Map<String,String>>();

Map<String,String>map=null;

URLurl=newURL(path);

//利用HttpURLConnection对象,我们可以从网络中获取网页数据.

HttpURLConnectionconn=(HttpURLConnection)url.openConnection();

conn.setConnectTimeout(5*1000);//单位是毫秒,设置超时时间为5秒

//HttpURLConnection是通过HTTP协议请求path路径的,所以需要设置请求方式,可以不设置,因为默认为GET

conn.setRequestMethod("GET");

if(conn.getResponseCode()==200){//判断请求码是否是200码,否则失败

InputStreamis=conn.getInputStream();//获取输入流

byte[]data=readStream(is);//把输入流转换成字符数组

Stringjson=newString(data);//把字符数组转换成字符串

/*

*数据形式:

*{"name":"小猪",

*"age":23,

*"content":{"questionsTotal":2,

*"questions":[{"question":"what'syourname?","answer":"小猪"},

*{"question":"what'syourage","answer":

*"23"}]

*}

*}

*/

//返回的数据形式是一个Object类型,所以可以直接转换成一个Object

JSONObjectjsonObject=newJSONObject(json);

Stringname=jsonObject.getString("name");

intage=jsonObject.getInt("age");

Log.i("abc","name:"+name+"|age:"+age);//测试数据

//获取对象中的对象

JSONObjectcontentObject=jsonObject.getJSONObject("content");

//获取对象中的一个值

StringquestionsTotal=contentObject.getString("questionsTotal");

//获取对象中的数组

JSONArraycontentArray=contentObject.getJSONArray("questions");

for(inti=0;i<contentArray.length();i++){

JSONObjectitem=contentArray.getJSONObject(i);//得到每个对象

Stringquestion=item.getString("question");//获取对象对应的值

Stringanswer=item.getString("answer");

map=newHashMap<String,String>();//存放到MAP里面

map.put("question",question);

map.put("answer",answer);

list.add(map);

}

}

returnlist;

}

/**

*把输入流转换成字符数组

*@paraminputStream输入流

*@return字符数组

*@throwsException

*/

publicstaticbyte[]readStream(InputStreaminputStream)throwsException{

ByteArrayOutputStreambout=newByteArrayOutputStream();

byte[]buffer=newbyte[1024];

intlen=0;

while((len=inputStream.read(buffer))!=-1){

bout.write(buffer,0,len);

}

bout.close();

inputStream.close();

returnbout.toByteArray();

}

}

--------------------------------------------结果----------------------------------------------------

War包放入tomcat

启动tomcat,访问网页地址

本机IP

客户端效果

点击getJSONArray按钮

点击getJSONObject按钮

点击getJSON按钮

<!--EndFragment-->

更多相关文章

  1. Android(安卓)StatusBar
  2. Android(安卓)获取设备唯一UUID
  3. android代码片段一
  4. Android(安卓)uses-permission权限
  5. android获取应用名称,判断应用是否安装
  6. Android之获取Android唯一ID
  7. android 将图片转换成黑白图片
  8. android文件缓存,并SD卡创建目录未能解决和bitmap内存溢出解决
  9. Android(安卓)获取当前日期 时间

随机推荐

  1. Android卸载监听之后访问后台或者弹出一
  2. 解决Android模拟器不能联网问题
  3. Android搜索框输入内容点击键盘的搜索按
  4. Android(安卓)小项目之---Toast对象详细
  5. 【react-natvie】react-native Android(
  6. Android相机实时自动对焦的完美实现
  7. Android基于环信SDK开发IM即时聊天(一)
  8. 安全与权限
  9. android的 网络下载和数据持久化
  10. 中国市场 Android(安卓)App 兼容性报告