`

Android利用Json来进行网络数据传输

 
阅读更多

最近做一项目,有很多地方得用到网络数据传输与解析,这里采用的是Json方式,它与传统的XML解析方式比起来,有自己的一些优点,首先,它是比XML更轻量级,再一个,写一个XML文件是个烦人的事儿,而Json则相对轻松些。

          Android平台有Jsong相关的类来进行Json数据解析,悲剧的是,它们是Android SDK3.0以后才能用的。不过在谷歌网站:http://code.google.com/p/google-gson/里有一个名为Gson的类库,可以用它来解析Json数据,并且,Adroid 3.0平台里其实也就是把这一部分直接整合进Android里了。我们要解析Json数据,直接去网站上下载个jar包,导入到工程里,就可以解析Json数据了。

下面有个例子,很清晰的解释了这种工作方式:

先看看两个我自己封装的类:

HttpUtils.java:

public class HttpUtils {   //从服务器端下载到Json数据,也就是个字符串

    public static String getData(String url) throws Exception {

        StringBuilder sb = new StringBuilder();

        HttpClient httpClient = new DefaultHttpClient();

        HttpGet httpGet = new HttpGet(url);

        HttpResponse httpResponse = httpClient.execute(httpGet);

        HttpEntity httpEntity = httpResponse.getEntity();

        if (httpEntity != null) {

            InputStream instream = httpEntity.getContent();

            BufferedReader reader = new BufferedReader(new InputStreamReader(

                    instream));

            String line = null;

            while ((line = reader.readLine()) != null) {

                sb.append(line);

            }

            return sb.toString();

        }

        return null;

    }

 

JsonUtils.java:

public class JsonUtils {

    public static List<Student> parseStudentFromJson(String data) {

        Type listType = new TypeToken<LinkedList<Student>>() {

        }.getType();

        Gson gson = new Gson();

        LinkedList<Student> list = gson.fromJson(data, listType);

        return list;

    }

}

 

里面的Student是一个JavaBean对象:

public class Student {

    private String name;

    private int age;

    private String id;

 

    public Student() {

        super();

    }

 

    public Student(String name, int age, String id) {

        super();

        this.name = name;

        this.age = age;

        this.id = id;

    }

 

    public String getName() {

        return name;

    }

 

    public void setName(String name) {

        this.name = name;

    }

 

    public int getAge() {

        return age;

    }

 

    public void setAge(int age) {

        this.age = age;

    }

 

    public String getId() {

        return id;

    }

 

    public void setId(String id) {

        this.id = id;

    }

 

}

 

public class MainActivity extends Activity {

    private TextView textView;

    private List<Student> list;

 

    /** Called when the activity is first created. */

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        textView = (TextView) findViewById(R.id.textView);

        String data = null;

        try {

            data = HttpUtils

                    .getData("http://10.16.12.165:8080/JsonTest/JsonTestServlet");

        } catch (Exception e) {

            e.printStackTrace();

        }

        String result = "";

        list = JsonUtils.parseStudentFromJson(data);

        for (Student s : list) {

            result += "name: " + s.getName() + "   " + "age: " + s.getAge()

                    + "   " + "id: " + s.getId() + "\n";

        }

        textView.setText(result);

    }

}

 

这样就可以获取网络数据并加以解析利用了,运行结果如下:



 

 

  • 大小: 9.2 KB
1
0
分享到:
评论
1 楼 黑人也疯狂 2012-08-23  
如果数据量很大,会报错吗?我传过来的json格式的String大于1051就挂了...

相关推荐

    Android Studio实现MQTT数据收发及数据处理

    在Android Studio实现MQTT对主题的订阅和数据的收发,以及将数据封装成对象传回MainActivity,方便进行数据处理,其操作信息在TextView中展示相关的数据。对相关的数据一目了然,同时,在页面中为物联网的开发提供了...

    json-struts-android-mysql代码文件

    数据传输:Json 使用说明: 1、利用MySQL新建数据库,建数据表:usermsg,有两个属性:username、password,字段类型为varchar; 2、将数据库名、用户名、密码,依次写入文件GetConn.java(位于\json-struts-android-...

    10分钟掌握XML、JSON及其解析

    随着移动互联网时代的大潮,越来越多的App不光是需要和网络服务器进行数据传输和交互,也需要和其他 App 进行数据传递。承担App与网络来进行传输和存储数据的一般是XML或者JSON。在移动互联网时代,XML和JSON很重要...

    用Android Studio绘制贝塞尔曲线的艺术之旅

    1. 贝塞尔曲线的绘制:我们巧妙地利用Android Studio的绘图功能,实现了贝塞尔曲线的绘制。通过简单的操作,你可以自由操控曲线的形状和曲率,为你的艺术作品注入无限可能。 2. JSON数据解析:我们应用程序支持JSON...

    Android开发资料合集--续

    61、json数据格式解析 95 62、两种Toast 97 63、控件抖动的实现 98 64、判断媒体文件类型 99 65、编写使用root权限的应用 102 66、获取所有安装了的App的信息 103 67、帧动画 104 68、scrollview 106 1、横向反弹...

    RPC_Framework:基于TCP协议的远程过程调用框架客户端实现

    RPC_Framework #####基于TCP协议的远程过程调用框架——客户端,服务端基于TCP协议实现的一套RFC(远程过程调用)框架。 客户端和服务端均分为业务...如果想支持其他数据传输协议,只需替换数据层即可。 #####知识扩展

    Java资源包01

    利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于【自动提示】的需要(如:Google搜索), 而开发的架构无关的公共控件, 以满足该类...

    JAVA上百实例源码以及开源项目源代码

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

    java开源包1

    利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于【自动提示】的需要(如:Google搜索), 而开发的架构无关的公共控件, 以满足该类...

    JAVA上百实例源码以及开源项目

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

    java开源包11

    利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于【自动提示】的需要(如:Google搜索), 而开发的架构无关的公共控件, 以满足该类...

    java开源包2

    利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于【自动提示】的需要(如:Google搜索), 而开发的架构无关的公共控件, 以满足该类...

    java开源包3

    利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于【自动提示】的需要(如:Google搜索), 而开发的架构无关的公共控件, 以满足该类...

    java开源包6

    利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于【自动提示】的需要(如:Google搜索), 而开发的架构无关的公共控件, 以满足该类...

    java开源包5

    利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于【自动提示】的需要(如:Google搜索), 而开发的架构无关的公共控件, 以满足该类...

    java开源包10

    利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于【自动提示】的需要(如:Google搜索), 而开发的架构无关的公共控件, 以满足该类...

    java开源包4

    利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于【自动提示】的需要(如:Google搜索), 而开发的架构无关的公共控件, 以满足该类...

    java开源包8

    利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于【自动提示】的需要(如:Google搜索), 而开发的架构无关的公共控件, 以满足该类...

Global site tag (gtag.js) - Google Analytics