安卓大json文件解析_安卓解析 json 4种格式 全解析
1 简单的一个 { ,,,,}
2 里面有数组 { , [{,,},{,,}],}
3 直接一个数组
4 数组里有数组
5 其他情况? 没有吧,除非json格式不规范
主代码:
package com.example.json;
import Java.NET.URL;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import Android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity {
private Button btn2;
private Button btn3;
private Button btn4;
private Button btn5;
private Button btn6;
private Button btn7;
private TextView txt1;
private String baseUrl="http://ip:8088/ship/servlet/getposinfo";
private String str="";
private Handler handler=new Handler()
{
@Override
public void handleMessage(Message msg) {
// 返回的字符串 直接是个数组
// [{"devid":"1234567800","latitude":"29.4963","longitude":"116.189","postime":"2014-06-10 12:13:00"},
// {"devid":"1234567832","latitude":"29.4943","longitude":"1161.129","postime":"2014-06-11 12:13:00"}]
if (msg.what==1)
{
Log.v("zms","使用httpclient,返回的json");
try {
JSONArray jsonArray = new JSONArray(String.valueOf(msg.obj));
txt1.setText(" ");
str="httpclient:";
for (int i=0;i
{
JSONObject jsonObject2 = (JSONObject)jsonArray.opt(i);
str=str+"第"+i+"个,devid:"+jsonObject2.getString("devid")+"维度:"+jsonObject2.getString("latitude")+"\n";
txt1.setText(str);
Log.v("zms", str);
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
else if (msg.what==2)
{
Log.v("zms","使用httpurlconnection返回的json");
try {
JSONArray jsonArray = new JSONArray(String.valueOf(msg.obj));
txt1.setText(" ");
str="urlconnect:";
for (int i=0;i
{
JSONObject jsonObject2 = (JSONObject)jsonArray.opt(i);
str=str+"第"+i+"个,devid:"+jsonObject2.getString("devid")+"维度:"+jsonObject2.getString("latitude")+"\n";
txt1.setText(str);
Log.v("zms", str);
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
super.handleMessage(msg);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txt1=(TextView)findViewById(R.id.textView1);
//最简单 的 直接一个对象
btn2=(Button)findViewById(R.id.button2);
btn2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
txt1.setText("");
str="";
try {
// {"username":"zms",age:23,"addr","from china"};
String json="{\"username\":\"zms\",\"age\":43,\"addr\":\"江西省高安市村前镇\"}";
JSONObject jsonObject2 =new JSONObject(json);
str="名字:"+jsonObject2.getString("username")+"年薪:"+jsonObject2.getString("age")+jsonObject2.getString("addr")+"\n";
txt1.setText(str);
Log.v("zms", str);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
//对象里有数组
btn3=(Button)findViewById(R.id.button3);
btn3.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
txt1.setText("");
str="";
try {
//{"username":"zms",age:11,"jicheng":[{"zhengshu":"PMP","date":"2011年"},{"zhengshu":"信息系统项目管理师","date","2012年"}],"addr":"江西"}
// 这种也属于 对象里有数组 {"json":[{"username":"zms","date":"2011年"},{"username":"ivy","date","2012年"}]}
String json= "{\"username\":\"张木生\",age:11,\"jicheng\":[{\"zhengshu\":\"PMP\",\"date\":\"2011年\"},{\"zhengshu\":\"信息系统项目管理师\",\"date\":\"2012年\"}],\"addr\":\"江西\"}";
JSONObject jsonObject2 =new JSONObject(json);
str="名字:"+jsonObject2.getString("username");
str=str+"工龄:"+jsonObject2.getString("age")+"证书:";
JSONArray jsonArray = jsonObject2.getJSONArray("jicheng");
for (int i=0;i
{
JSONObject jsonObjectSon= (JSONObject)jsonArray.opt(i);
str=str+jsonObjectSon.getString("zhengshu")+"年份:"+jsonObjectSon.getString("date");
}
str=str+"籍贯"+jsonObject2.getString("addr");
txt1.setText(str);
Log.v("zms", str);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
//直接一个数组
btn4=(Button)findViewById(R.id.button4);
btn4.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Log.v("zms","响应4");
txt1.setText("");
str="";
// 返回的字符串 直接是个数组
// [{"devid":"1234567800","latitude":"29.4963","longitude":"116.189"},{"devid":"1234567832","latitude":"29.4943","longitude":"1161.129"}]
String json="[{\"devid\":\"1234567800\",\"latitude\":\"29.4963\",\"longitude\":\"116.189\"},{\"devid\":\"1234567832\",\"latitude\":\"29.4943\",\"longitude\":\"1161.129\"}]";
try {
JSONArray jsonArray = new JSONArray(json);
for (int i=0;i
{
JSONObject jsonObject2 = (JSONObject)jsonArray.opt(i);
str=str+"第"+i+"个,devid:"+jsonObject2.getString("devid")+"维度:"+jsonObject2.getString("latitude")+"经度:"+jsonObject2.getString("longitude")+"\n";
}
txt1.setText(str);
Log.v("zms", str);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
//数组里有数组
btn5=(Button)findViewById(R.id.button5);
btn5.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
txt1.setText("");
str="";
// 返回的字符串 直接是个数组
/* [
{"devid":"1234567800","gps":[{"time":"2014-11-12","latitude":"29.4963","longitude":"116.189"},{"time":"2014-11-12","latitude":"29.4963","longitude":"116.189" }],"devname":"赣01"},
{"devid":"1234567800","gps":[{"time":"2014-11-12","latitude":"29.4963","longitude":"116.189"},{"time":"2014-11-12","latitude":"29.4963","longitude":"116.189" }],"devname":"赣92"},
{"devid":"1234567800","gps":[{"time":"2014-11-12","latitude":"29.4963","longitude":"116.189"},{"time":"2014-11-12","latitude":"29.4963","longitude":"116.189" }],"devname":"赣43"},
], */
String json="["+
"{\"devid\":\"1234567800\",\"gps\":[{\"time\":\"2014-11-12\",\"latitude\":\"29.4963\",\"longitude\":\"116.189\"},{\"time\":\"2014-11-12\",\"latitude\":\"29.4963\",\"longitude\":\"116.189\" }],\"devname\":\"赣01\"},"+
" {\"devid\":\"1234567800\",\"gps\":[{\"time\":\"2014-11-12\",\"latitude\":\"29.4963\",\"longitude\":\"116.189\"},{\"time\":\"2014-11-12\",\"latitude\":\"29.4963\",\"longitude\":\"116.189\" }],\"devname\":\"赣92\"},"+
" {\"devid\":\"1234567800\",\"gps\":[{\"time\":\"2014-11-12\",\"latitude\":\"29.4963\",\"longitude\":\"116.189\"},{\"time\":\"2014-11-12\",\"latitude\":\"29.4963\",\"longitude\":\"116.189\" }],\"devname\":\"赣43\"}"+
"]";
try {
JSONArray jsonArray = new JSONArray(json);
for (int i=0;i
{
String tpstr="";
JSONObject jsonObject5 = (JSONObject)jsonArray.opt(i);
str=str+"第"+i+"条船,设备号devid:"+jsonObject5.getString("devid");
JSONArray jsonArray5 = jsonObject5.getJSONArray("gps");
for (int j=0;j
{
JSONObject jsonOb5Son=(JSONObject)jsonArray5.opt(j);
tpstr="采集时间:"+jsonOb5Son.getString("time")+"维度"+jsonOb5Son.getString("latitude")+"经度:"+jsonOb5Son.getString("longitude");
}
str=str+tpstr;
}
txt1.setText(str);
Log.v("zms", str);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
//httpclient访问网络返回json
btn6=(Button)findViewById(R.id.button6);
btn6.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
txt1.setText("");
/*从安卓3.0以后,就不允许在主线程中直接访问网络,必须在子线程中访问
访问后要修改主线程的UI,需要使用handler通信*/
accessThread1 mythread1=new accessThread1();
mythread1.start();
}
});
//httpurlconnection访问网络返回json
btn7=(Button)findViewById(R.id.button7);
btn7.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
txt1.setText("");
/*从安卓3.0以后,就不允许在主线程中直接访问网络,必须在子线程中访问
访问后要修改主线程的UI,需要使用handler通信*/
accessThread2 mythread2=new accessThread2();
mythread2.start();
}
});
}
class accessThread1 extends Thread{
@Override
public void run() {
Log.v("zms","线程accessThread开始");
Message msg1=handler.obtainMessage();
msg1.what=1;
msg1.obj=util.getHttpJsonByhttpclient(baseUrl);
handler.sendMessage(msg1);
super.run();
}
}
class accessThread2 extends Thread{
@Override
public void run() {
Log.v("zms","线程accessThread2开始");
Message msg2=handler.obtainMessage();
msg2.what=2;
msg2.obj=util.getHttpJsonByurlconnection(baseUrl);
handler.sendMessage(msg2);
super.run();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
-------------------------------------------------------------------------------------------------------------------------------
layout XMl文件
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context=".MainActivity" >
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
android:id="@+id/button2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="直接一个对象" />
android:id="@+id/button3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="对象里有数组" />
android:id="@+id/button4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="直接一个数组" />
android:id="@+id/button5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="数组里还有数组" />
android:id="@+id/button6"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="httpclient获取json" />
android:id="@+id/button7"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="httpurlconnection获取json" />
公共服务类 util 里面2个静态方法 用来 返回 json 字符串
package com.example.json;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.Net.HttpURLConnection;
import java.net.URL;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import android.util.Log;
public class util {
public static String getHttpJsonByhttpclient(String fromurl)
{
try{
Log.v("zms","使用httget");
HttpGet geturl=new HttpGet(fromurl);
DefaultHttpClient httpclient=new DefaultHttpClient();
HttpResponse response=httpclient.execute(geturl);
Log.v("zms","响应码"+response.getStatusLine().getStatusCode());
if (response.getStatusLine().getStatusCode()==200)
{
String returnStr=EntityUtils.toString(response.getEntity(),"utf-8");
Log.v("zms","返回值"+returnStr);
return returnStr;
} else
{
Log.v("zms","访问网络返回数据失败,错误码:"+response.getStatusLine().getStatusCode());
}
}
catch(IOException e)
{
e.printStackTrace();
}
return null;
}
public static String getHttpJsonByurlconnection(String fromurl)
{
try
{
Log.v("zms","使用httpurlconnection");
ByteArrayOutputStream os=new ByteArrayOutputStream();
byte[] data =new byte[1024];
int len=0;
URL url=new URL(fromurl);
HttpURLConnection conn=(HttpURLConnection)url.openConnection();
InputStream in=conn.getInputStream();
while ((len=in.read(data))!=-1)
{
os.write(data,0,len);
}
in.close();
return new String(os.toByteArray());
} catch (Exception e)
{
e.printStackTrace();
}
return null;
}
}
安卓大json文件解析_安卓解析 json 4种格式 全解析相关推荐
- 23种设计模式全解析
longyulu的专栏 目录视图 摘要视图 订阅 [公告]博客系统优化升级 [收藏]Html5 精品资源汇集 博乐招募开始啦 id="cpro_u2392861_ifra ...
- 软件工程23种设计模式全解析
23种设计模式全解析 一.设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代 ...
- 【转】ssa/ass字幕格式全解析
http://www.6psp.cn/20100714/ssa-ass%E5%AD%97%E5%B9%95%E6%A0%BC%E5%BC%8F%E5%85%A8%E8%A7%A3%E6%9E%90.h ...
- csv文件示例_自己动手? -一个简单的CSV解析器示例
csv文件示例 Download source code - 2.7 MB 下载源代码2.7 MB 目录 (Table of Contents) Introduction 介绍 The Dataset ...
- cfile清空文件内容_编译-链接-加载 :ELF文件格式解析
摘要:对于C++的初学者,经常在程序的编译或者加载过程中遇到很多错误,类似undefined reference to ... 和 GLIBCXX_3.4.20 not found 等.这些错误都涉及 ...
- kotlin 读取json文件_Kotlin数据类及json解析
通过数据类,可以方便地得到很多有趣的函数,一部分是来自属性,比如编写getter和setter函数,还有下面这些函数:equals(): 比较两个对象的属性来确保他们是相同的. hashCode(): ...
- 安卓版kindle电子书位置_安卓手机APP如何打开三种格式的电子书文件
首先登陆网站,在电脑端下载三种格式的<手把手教你玩脱口秀>,分别是epub ./mobi./pdf.格式. 一.epub.格式 1.在电脑端下载好后,直接把文件(电子书)发到手机上,在手机 ...
- android音频驱动目录,手机录音在哪个文件夹_安卓手机录音保存路径 - 驱动管家...
安卓手机录音在哪个文件夹?几乎所有的手机都支持录音功能,虽然可以在录音机里面看到录音记录,想要将其拷贝出来却需要费一番心思去寻找,当然,我们也可以换一个思路,利用分享功能让安卓自动拷贝文件上传到指定客 ...
- 安卓修改电池容量教程_安卓手机端修改电池电量图标的教程
5.修改电量显示为1%,电池图标为原版+数字显示风格.你一定不全知道的秘密,安卓手机拨号键代码大全.在安卓手机拨号面板中输入以下拨号代码就可执行一些鲜为人知的键盘隐藏功能,这些是开发者所熟知的,但普通 ...
最新文章
- QListWidget 小练习
- 菜鸟配置SAMBA服务器之2
- 每秒改变一次背景颜色以及由此引发的一些有趣的小事情(.net方向)
- 宜昌远安谋定功能性-农业大健康·万祥军:绿色和谐新路
- oracle获取分组后的统计信息,并只要前五条
- spring aop实例讲解_Spring核心技术详解(一)
- 韦东山嵌入式学习视频完整目录
- pandas获取全部列名_pandas获取全部列名_pandas DataFrame数据重命名列名的几种方式...
- flink-metric原理与实战
- mysql 获取农历年份_ASP获取农历日期程序代码
- initialization on demand holder
- matlab均值量化函数_Matlab量化函数quantiz解析
- android4.2 拦截power键,Android 屏蔽Power键 Home键
- 这可能是最全的Web测试各个测试点,有这一篇就够了
- os.path.abspath与os.path.realpath 区别
- Unity 2021.1.15 ARCore环境配置与样例开发
- 国有企业和中央企业有什么不同?
- 赵小楼《天道》《遥远的救世主》深度解析(60)芮小丹的独立意识与丁元英的尊重
- 黑马程序员 网络编程1
- C6678 srio和edma同时访问ddr冲突问题解决思路
热门文章
- 中国人类蛋白质组学突破:发现肝细胞癌治疗潜在靶点
- 2022-2028全球及中国信息和通信技术(ICT)资本支出行业研究及十四五规划分析报告
- Python 爬取B站视频信息 弹幕信息 生成词云统计
- stm32之蓝牙控制通信(JDY-24)led初级应用
- Python生成三对角矩阵
- 客户端如何连接oracle,ORACLE的客户端如何连接到数据库
- 单片机c语言编程下载,单片机C语言编程.doc
- 群狼调研完成深圳宝安前海商圈消费者市场调查
- 黄迪明版c语言课后答案,《C语言程序设计教程》(主编黄迪明、余勤)第七章课后习题答案...
- 总结嵌入式C语言难点(2部分)