当前位置:首页 > 开发 > 移动开发 > 正文

Android JSON数据的解析与封装小Demo

发表于: 2015-03-26   作者:ronin47   来源:转载   浏览:
摘要: 转自:http://www.open-open.com/lib/view/open1420529336406.html package com.example.jsondemo; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject;    impor
转自:http://www.open-open.com/lib/view/open1420529336406.html
package com.example.jsondemo;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
  
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
  
public class Main extends Activity {
  
    // private static final String BASE_URL =
    // "http://zhoumushui.sinaapp.com/json/";
    private TextView tvMsg;
    private TextView tvJson;
    private EditText etName;
    private EditText etAge;
    private String strJson = "";
    private String staffInfo = "";
    private String strJsonRes = "";
    private String strMsg;
    private Button btnAdd;
    private Button btnJson;
  
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        tvMsg = (TextView) findViewById(R.id.tvMsg);
        tvJson = (TextView) findViewById(R.id.tvJson);
        etName = (EditText) findViewById(R.id.etName);
        etAge = (EditText) findViewById(R.id.etAge);
        btnAdd = (Button) findViewById(R.id.btnAdd);
        btnJson = (Button) findViewById(R.id.btnJson);
  
        MsgToJson(); // 封装Json
        JsonToMsg(); // 解析Json
    }
  
    class onClickListenerImp implements OnClickListener {
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            if (v == btnAdd) {
                if (strMsg != null && strJson.trim().length() != 0) {
                    strMsg = strMsg + ",{name:'" + etName.getText().toString()
                            + "',age:" + etAge.getText().toString() + "}";
                } else {
                    strMsg = "{staff:[{name:'" + etName.getText().toString()
                            + "',age:" + etAge.getText().toString() + "}";
                }
                Toast.makeText(Main.this, "Add Succcess!", Toast.LENGTH_SHORT)
                        .show();
                etAge.setText("");
                etName.setText("");
            } else if (v == btnJson) {
                strJsonRes = "";
                strJsonRes = strMsg + "]}";
                tvJson.setText(strJsonRes);
            }
        }
    }
  
    private void MsgToJson() {
        btnAdd.setOnClickListener(new onClickListenerImp());
        btnJson.setOnClickListener(new onClickListenerImp());
  
    }
  
    private void JsonToMsg() {
        strJson = "{staff:[{name:'Alex',age:21},{name:'Zhou',age:22},{name:'Anne',age:23}],company:'T-Chip'}";
        staffInfo = "原始数据:\n" + strJson + "\n\n解析之后:\n";
        try {
            JSONObject mJsonObject = new JSONObject(strJson);
              
            JSONArray mJsonArray = mJsonObject.getJSONArray("staff");
            String company = mJsonObject.getString("company");
            staffInfo = staffInfo + company + "共有 " + mJsonArray.length()
                    + " 个员工,信息如下:\n";
  
            for (int staffCount = 0; staffCount < mJsonArray.length(); staffCount++) {
                // 获取员工
                JSONObject staff = mJsonArray.getJSONObject(staffCount);
                int staffNo = staffCount + 1;
                staffInfo = staffInfo + "序号:" + staffNo + "  姓名: "
                        + staff.getString("name") + "  年龄: "
                        + staff.getInt("age") + "\n";
            }
            tvMsg.setText(staffInfo);
        } catch (JSONException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

布局有点拖沓,其实数据封装部分还可以利用一下解析部分的逻辑。
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
  
    <TextView
        android:id="@+id/tvMsg"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
  
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="==========================" />
  
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >
  
        <EditText
            android:id="@+id/etName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:hint="姓名" />
  
        <EditText
            android:id="@+id/etAge"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:hint="年龄" />
  
        <Button
            android:id="@+id/btnAdd"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="增加" />
          <Button
            android:id="@+id/btnJson"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="JSON" />
          
    </LinearLayout>
  
    <TextView
        android:id="@+id/tvJson"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
  
</LinearLayout>

Android JSON数据的解析与封装小Demo

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
废话不多说,直接上代码,布局文件: <?xml version="1.0" encoding="utf-8"?> <LinearLay
JSON(JavaScript Object Notation) 定义: 它是基于JavaScript编程语言ECMA-262 3rd Edition-Decemb
JSON(JavaScript Object Notation) 定义: 它是基于JavaScript编程语言ECMA-262 3rd Edition-Decemb
本文讲解android解析json数据。客户端接收服务端发来的4种json数据,分别解析成四种类型Person , Li
Json数据:"{\"UserID\":\"Allen\",\"Dep\":IT,\"QQ\":\"969661314\"}" 通过如下代码,将此Json数据
前言 喜欢在前言里讲一下自己的现状,或许能有共鸣的同学,更多的是留给自己一个纪念,几个月或者几
声明: 1、本帖只提供代码,不深入讲解原理。如果读者想要深入了解,那就不要在这个帖子上浪费时间
假设我们获取到的JSON数据如下图所示: 因为里面有需要显示的图片,直接在UI thread decode图片容易
在执行解析数据之前,需要将一个类库应用到你的程序中,下载的地址是: http://code.google.com/p/g
一、什么是json json(Javascript Object Notation)是一种轻量级的数据交换格式,相比于xml这种数据
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号