- 浏览: 985136 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (832)
- 系统集成、架构 (116)
- 前端负载、开发、db (139)
- 监控与安全、性能 (70)
- Trouble Shooting (45)
- 管理哲学、业余提升 (9)
- 经典转载 (8)
- 主导过项目演示 (37)
- docker集群 (9)
- jvm 性能参数 (7)
- 监控平台 (28)
- 发布管理平台 (6)
- 日志平台 (53)
- Tools (36)
- shell & pytho &ansible自动化运维平台 (20)
- mongodb&nosql&db (32)
- system (12)
- kafa zk (11)
- python&nodejs (311)
- 数据平台 (5)
- PAAS (0)
- IAAS (0)
- SAAS (0)
- Go (2)
- kotlin (2)
- Redis学习笔记4-脚本、持久化和集群 (2)
最新评论
-
hsluoyz:
PyCasbin 是一个用 Python 语言打造的轻量级开源 ...
django guardian 对象级别权限设计 -
phncz310:
厉害了,我的哥
python黑魔法异常重试的次数,间隔的装饰器涵数 -
adamoooo:
Zabbix二次开发,可以试试:乐维监控www.91lewei ...
zabbix二次开发及app -
shi3689476:
你好,模块下载地址还能提供一下吗?
NGINX开发杀手锏-线程池 -
tobato:
Elasticsearch 和 Influxdb 为何选了El ...
elastic作数据源,对比kibana与grafana
转自: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>
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>
发表评论
-
monacmonaco-editor使用
2018-01-29 10:56 1124monaco-editor使用 monaco ... -
Jquery文字一行一行向上滚动
2016-07-31 08:37 1021Jquery文字一行一行向上滚动 效果是用了Jquery中a ... -
Python直连MySQL数据库
2016-07-07 19:38 897Python标准数据库接 ... -
高流量站点NGINX与PHP-fpm配置优化
2016-05-05 18:08 541使用Nginx搭配PHP已有7年 ... -
GOPS2016笔记思考
2016-04-16 22:07 999花了一天时间整理思路,把吸收知识吐出来, ... -
nginx访问量统计
2016-04-12 11:27 11641.根据访问IP统计UV awk ... -
一种基于哨兵的缓存访问策略
2016-03-26 09:29 600一种基于哨兵的缓存访问策略 学习自 一种基于“哨兵”的分布 ... -
用户访问app缓存的过程
2016-02-27 10:13 928在web项目中,大家都已经非常熟悉其架构流程了 ... -
用lua让nginx成为应用服务器
2016-02-26 17:37 890相遇是件难得 ... -
NGINX开发杀手锏-线程池
2016-02-26 16:46 1347nginx以高性能著称,在其内部运转的过程中, ... -
nginx支持js语言
2016-02-26 15:17 1009nginx一直希望支持更多的脚本能力,现在js ... -
阅读博客 添加收藏 nginx动态代理方案
2016-02-26 15:13 1210我做的是nginx + ... -
nginx 取不到返回值的分析过程
2016-02-26 14:45 2573由nginx负载遇 ... -
我做过的三种sso对比
2016-02-25 14:58 1849第一种很常见的sso,是整合开源的 ... -
nginx配置lua模块和基于lua的waf三种方式
2016-02-24 09:40 1237nginx和lua都注重性能,使用lua扩展nginx大大增 ... -
nginx location 规则
2016-02-23 10:55 525location 匹配规则 语法规则 location ... -
nginx cache静态化+tmpfs 高性能cdn方案
2016-02-22 21:08 15231 摘要 本文档主要分为3部分内容: ( ... -
Elasticsearch结合Nginx使用
2016-02-22 08:43 1437Elasticsearch是一种先进的,高性能的,可扩展的开 ... -
Nginx添加header防止网页被iframe
2016-02-21 09:08 1987页面给很多可恶的人调用己经不是什么怪事了,我们 ... -
NGINX 配置 Pagespeed 压缩网站静态资源
2016-02-18 17:35 1272Pagespeed 是一个开源项 ...
相关推荐
本示例"JSON解析demo.zip"提供的可能是一个使用自定义封装类快速解析JSON数据的实例,这对于简化代码和提高效率非常有用。 首先,我们来了解`org.json`库中的主要类: 1. **JSONObject**:代表一个JSON对象,它由...
JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也方便机器解析和生成,是Android与服务器通信的常用方式。 首先,我们需要在Android端创建HTTP请求来发送数据到PHP服务器。Android提供多种网络API,如...
Android提供了`Gson`库进行JSON解析,或者使用`XmlPullParser`进行XML解析。 6. **服务器端处理**:在服务器端,通常会有一个Web服务接口,如本例中的`struts_login.rar`,可能是一个基于Struts框架的登录功能。...
这个DEMO可能包含了Android的Activity、Service或AsyncTask,用于封装HTTP请求和JSON解析逻辑,以及UI部分用于展示数据。 总之,Android访问PHP调取JSON数据是一个常见的应用场景,涉及到网络请求、数据解析等多个...
本文将深入解析一个封装好的OkHttp Demo,帮助开发者理解如何在商业项目中直接使用,提高开发效率。 **一、OkHttp简介** OkHttp是由Square公司开发的一款HTTP客户端,它通过一系列优化,如连接池、HTTP/2协议支持...
例如,从服务器获取JSON数据并解析: ```java NetUtil.sendRequest("http://api.example.com/data", RequestMethod.GET, null, new NetUtil.OnResponseListener() { @Override public void onSuccess(String ...
实现了最简单的在Android客户端将数据封装为json格式,并且传到服务器,服务器将数据解析出来,并封装自己的数据到json中传回到客户端,客户端解析服务器传过来的数据并显示,采用HttpClient进行通信,亲自测试,...
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于JavaScript的一个子集,易于人阅读和编写,同时也易于机器解析和生成。在Java中,我们常常需要将JSON字符串与Java对象之间进行转换,以便于...
2. **JSON解析**: - JSON(JavaScript Object Notation)是数据交换的标准格式,天气API返回的数据通常以JSON形式提供。 - Android中,可以使用`Gson`库将JSON字符串转化为Java对象,或者使用`org.json`包中的`...
Volley本身并不提供JSON解析功能,但可以结合Gson库一起使用。首先,创建一个GsonRequest类,继承JsonObjectRequest或JsonArrayRequest,然后在parseNetworkResponse方法中使用Gson进行解析。 8. **图片加载** ...
网络上有很多Json解析库,这里我使用Gson来解析Json,Gson有个特点,就是要将数据的键作为变量封装到一个个实体中,如果值为数组的,变量的类型还必须是集合,然后通过Gson.fromJson来传入数据和实体类,再通过实体...
本教程将探讨如何在Android手机上实现与服务器的交互,通过发送JSON数据来获取服务器响应,这一过程通常被称为API调用。我们将关注以下几个关键知识点:Android网络编程、PHP后端处理以及MySQL数据库操作。 首先,...
在Android开发中,Web服务是一种常见的数据交互方式,它允许移动应用与远程服务器进行通信,获取或发送数据。本篇文章将深入探讨如何在Android中应用Web Services,特别是基于HTTP协议的SOAP(Simple Object Access ...
5)本demo可以直接运行 本来想测试protobuf进行数据处理的 要放在github上就改成json了(entity中有简单的xml解析:Menu.java 其他的都是json的 json 也可用Gson更方便) 博客链接使用说明:...
在Android与PC通信过程中,数据通常需要进行序列化(转化为网络传输的格式,如JSON或XML)和反序列化(将网络接收的数据转化为应用程序可使用的对象)。这个Demo可能使用了Gson或Jackson等库来处理序列化和反序列化...
6. **JSON解析**:微博API返回的数据通常是JSON格式,需要使用Gson、Jackson或org.json库来解析和处理。了解JSON对象和数组结构对于正确解析数据至关重要。 7. **OAuth认证**:为了安全地访问新浪微博API,开发者...
在【Android芝麻信用Demo】中,这部分代码通常会位于授权模块,用于处理与芝麻信用服务器的交互。 在完成授权流程后,开发者可以调用芝麻信用的API来获取用户信用信息。这些API可能包括查询信用分、查询详细信用...
在这个系统中,开发者利用Android SDK和相关的开发工具,结合网络请求技术,实现了与服务器的数据交互,为用户提供了一站式的火车票服务。 一、系统架构 1. 用户界面:系统采用Material Design设计原则,提供清晰...
- 数据解析:接收到JSON或XML格式的数据后,使用Gson、Jackson或简单的XML解析器将其转换为Java对象。 - 将数据添加到列表:将解析后的数据添加到适配器的列表中,然后更新ListView。 4. 性能优化: - ...
这个demo可能包含了一个简单的消息封装机制,通常我们会在发送数据前将其打包成特定格式,比如JSON或自定义的二进制格式,以便于服务器解析。在接收端,数据会被解包并恢复为原始形式。这一步可以通过自定义的序列化...