给服务端发送请求后,服务端会返回一连串的数据,这些数据在大部分情况下都是XML格式或者JSON格式。然后JSON相对XML来说解析相对方便一些,所以先说说JSON的解析。
JSON的基本数据格式有这几种:
1一个JSON对象——JSONObject
{"name":"胡小威" , "age":20 , "male":true}
2一个JSON数组——JSONArray
[{"name":"胡小威" , "age":20 , "male":true},{"name":"赵小亮" , "age":22 , "male":false}]
3复杂一点的JSONObject
{"name":"胡小威", "age"=20, "male":true, "address":{"street":"岳麓山南", "city":"长沙","country":"中国"}}
4复杂一点的JSONArray
[
{"name":"胡小威", "age"=20, "male":true, "address":{"street":"岳麓山南", "city":"长沙","country":"中国"}},
{"name":"赵小亮", "age"=22, "male":false, "address":{"street":"九州港", "city":"珠海","country":"中国"}}
]
5来个更复杂的,这是我从爱帮公交上扒取的数据
{"buses":{"bus":[{"last_foot_dist":"0","time":"37","segments":{"segment":[{"line_name":"立珊专线(中南大学学生公寓-长沙火车站)","foot_dist":"362","stat_xys":"","stats":"岳麓山南;湖南师大;二里半;岳麓山北;市四医院;华图教育(太平街口);牛耳教育(南阳街口);韭菜园;曙光路口;长岛路口;长沙火车站","end_stat":"长沙火车站","line_xys":"","line_dist":"7535","start_stat":"岳麓山南"}]},"foot_dist":"362","dist":"7897"},{"last_foot_dist":"0","time":"41","segments":{"segment":[{"line_name":"旅1路(科教新村-长沙火车站)","foot_dist":"337","stat_xys":"","stats":"岳麓山南;湖南师大;二里半;岳麓山北;市四医院;华图教育(太平街口);蔡锷中路口;韭菜园;乔庄;曙光路口;长岛路口;五一东村;车站路口;长沙火车站","end_stat":"长沙火车站","line_xys":"","line_dist":"7822","start_stat":"岳麓山南"}]},"foot_dist":"337","dist":"8159"}]}}
接下来是解析部分
一、直接解析
1{"name":"胡小威" , "age":20 , "male":true}
Java代码
public void parseJsonObject(String json) {
try {
JSONObject jsonObject = new JSONObject(json);
String name = jsonObjectgetString("name");
int age = jsonObjectgetInt("age");
boolean male = jsonObjectgetBoolean("male");
//接下来该干嘛干嘛
} catch (JSONException e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
}
2[{"name":"胡小威" , "age":20 , "male":true},{"name":"赵小亮" , "age":22 , "male":false}]
Java代码
public void parseJSONArray(String json) {
try {
JSONArray jsonArray = new JSONArray(json);
for (int i = 0; i < jsonArraylength(); i++) {
jsonObject = jsonArraygetJSONObject(i);
String name = jsonObjectgetString("name");
int age = jsonObjectgetInt("age");
boolean male = jsonObjectgetBoolean("male");
//接下来该干嘛干嘛
}
} catch (JSONException e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
}
3{"name":"胡小威", "age"=20, "male":true, "address":{"street":"岳麓山南", "city":"长沙","country":"中国"}}
Java代码
public void parseJsonPerson(String json) {
try {
JSONObject jsonObject = new JSONObject(json);
String name = jsonObjectgetString("name");
int age = jsonObjectgetInt("age");
boolean male = jsonObjectgetBoolean("male");
JSONObject addressJSON = jsonObjectgetJSONObject("address");
String street = addressJSONgetString("street");
String city = addressJSONgetString("city");
String country = addressJSONgetString("country");
Address address = new Address(street, city, country);
Person person = new Person(name, age, male, address);
} catch (JSONException e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
}
4
[
{"name":"胡小威", "age"=20, "male":true, "address":{"street":"岳麓山南", "city":"长沙","country":"中国"}},
{"name":"赵小亮", "age"=22, "male":false, "address":{"street":"九州港", "city":"珠海","country":"中国"}}
]
Java代码
public void parseJsonArrayPerson(String json) {
List<Person> persons = new ArrayList<Person>();
try {
jsonArray = new JSONArray(json);
for (int i = 0; i < jsonArraylength(); i++) {
jsonObject = jsonArraygetJSONObject(i);
String name = jsonObjectgetString("name");
int age = jsonObjectgetInt("age");
boolean male = jsonObjectgetBoolean("male");
JSONObject addressJSON = jsonObjectgetJSONObject("address");
String street = addressJSONgetString("street");
String city = addressJSONgetString("city");
String country = addressJSONgetString("country");
Address address = new Address(street, city, country);
Person person = new Person(name, age, male, address);
personsadd(person);
Logv("juno", persontoString());
}
} catch (JSONException e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
Logv("juno", personstoString());
}
5 {"buses":{"bus":[{"last_foot_dist":"0","time":"37","segments":{"segment":[{"line_name":"立珊专线(中南大学学生公寓-长沙火车站)","foot_dist":"362","stat_xys":"","stats":"岳麓山南;湖南师大;二里半;岳麓山北;市四医院;华图教育(太平街口);牛耳教育(南阳街口);韭菜园;曙光路口;长岛路口;长沙火车站","end_stat":"长沙火车站","line_xys":"","line_dist":"7535","start_stat":"岳麓山南"}]},"foot_dist":"362","dist":"7897"},{"last_foot_dist":"0","time":"41","segments":{"segment":[{"line_name":"旅1路(科教新村-长沙火车站)","foot_dist":"337","stat_xys":"","stats":"岳麓山南;湖南师大;二里半;岳麓山北;市四医院;华图教育(太平街口);蔡锷中路口;韭菜园;乔庄;曙光路口;长岛路口;五一东村;车站路口;长沙火车站","end_stat":"长沙火车站","line_xys":"","line_dist":"7822","start_stat":"岳麓山南"}]},"foot_dist":"337","dist":"8159"}]}}
Java代码
public List<Salution> parseJSON(String str){
Logd("返回的JSON数据:", str);
List<Salution> busList = new ArrayList<Salution>();
try {
JSONObject jsonObject = new JSONObject(str);
JSONObject busesJSON = jsonObjectgetJSONObject("buses");
JSONArray busJSArray=busesJSONgetJSONArray("bus");
for(int i=0;i<busJSArraylength();i++){
JSONObject busJSObject = busJSArraygetJSONObject(i);
JSONObject segsJSObject=busJSObjectgetJSONObject("segments");
JSONArray segJSArray=segsJSObjectgetJSONArray("segment");
Salution st=new Salution();
for(int j=0;j<segJSArraylength();j++){
if(j==0){
JSONObject segJSObject = segJSArraygetJSONObject(j);
stsetLine_name1(segJSObjectgetString("line_name"));
Logd("line_name", segJSObjectgetString("line_name"));
stsetStats1(segJSObjectgetString("stats"));
stsetEnd_stat1(segJSObjectgetString("end_stat"));
stsetStart_stat1(segJSObjectgetString("start_stat"));
}
if(j==1){
JSONObject segJSObject = segJSArraygetJSONObject(j);
stsetLine_name2(segJSObjectgetString("line_name"));
Logd("line_name", segJSObjectgetString("line_name"));
stsetStats2(segJSObjectgetString("stats"));
stsetEnd_stat2(segJSObjectgetString("end_stat"));
stsetStart_stat2(segJSObjectgetString("start_stat"));
}
}
busListadd(st);
}
return busList;
} catch (JSONException e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
return null;
}
这里我只是简单获取了几个我想要的数据。
二、使用JSON类库Gson 来解析JSON
Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以将一个 JSON 字符串转成一个 Java 对象,或者反过来。
首先,从 codegooglecom/p/google-gson/downloads/list下载GsonAPI
Java代码
google-gson-171-releasezip
再把gson-17jar copy到libs
可以使用两种方法解析
①、通过获取JsonReader对象解析JSON数据:
Java代码
String jsonData = "[{\"username\":\"arthinking\",\"userId\":001},{\"username\":\"Jason\",\"userId\":002}]";
try{
JsonReader reader = new JsonReader(new StringReader(jsonData));
readerbeginArray();
while(readerhasNext()){
readerbeginObject();
while(readerhasNext()){
String tagName = readernextName();
if(tagNameequals("username")){
Systemoutprintln(readernextString());
}
else if(tagNameequals("userId")){
Systemoutprintln(readernextString());
}
}
readerendObject();
}
readerendArray();
}
catch(Exception e){
eprintStackTrace();
}
②、通过把JSON数据映射成一个对象,使用Gson对象的fromJson()方法获取一个对象数组进行 *** 作
Java代码
Type listType = new TypeToken<LinkedList<User>>(){}getType();
Gson gson = new Gson();
LinkedList<User> users = gsonfromJson(jsonData, listType);
for (Iterator iterator = usersiterator(); iteratorhasNext();) {
User user = (User) iteratornext();
Systemoutprintln(usergetUsername());
Systemoutprintln(usergetUserId());
}
我一般是采用直接解析,添加类库神马的最讨厌了···
还有,抱怨一下,iteye的编辑弱爆了!!!
转载
使用守则
首先,我们要创建Web服务,从MySQL数据库中读取数据。
<php
<pre>/ require the user as the parameter /
<pre>//>
android Json接收是采用的(key,value)这样形式,所以你传输或者是接收的时候也要这种格式
[{"BU_ID":63,"BU_NAME":"testBU"},
{"BU_ID":61,"BU_NAME":"Sunford"},
{"BU_ID":62,"BU_NAME":"ZXHTsss"},
{"BU_ID":42,"BU_NAME":"Conti1"},
{"BU_ID":43,"BU_NAME":"NewBU"}]
String str="你接收的字符串"
JsonArray arry=new JsonArray( str);
然后在一个个的遍历出来
for(int i=0;i<arrylength();i++){
JsonObject obj=new JsonObject();
objgetString("BU_ID");/ objgetInt("BU_ID")
objgetString("BU_NAME");
}
Android中数据的存储有五种方式不同的应用及需求,会使用不同的方式去存储数据。
1 使用SharedPreferences存储数据
2 文件存储数据
3 SQLite数据库存储数据
4 使用ContentProvider存储数据
5 网络存储数据
不同的业务逻辑,或者需求,用不同的实现方式,以下是这几中数据存储方式的说明用及法:
第一种: 使用SharedPreferences存储数据
它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。
其存储位置在/data/data/< >/shared_prefs目录下。
第二种: 文件存储数据
关于文件存储,Activity提供了openFileOutput()方法可以用于把数据输出到文件中,具体的实现过程与在J2SE环境中保存数据到文件中是一样的。文件可用来存放大量数据,如文本、、音频等。
默认位置:/data/data/< >/files/。
第三种: SQLite数据库存储数据
SQLite是轻量级嵌入式数据库引擎,它支持 SQL 语言,并且只利用很少的内存就有很好的性能。此外它还是开源的,任何人都可以使用它。许多开源项目((Mozilla, PHP, Python)都使用了 SQLite。
数据库存储在 data/< 项目文件夹 >/databases/ 下。
第四种: 使用ContentProvider存储数据 ContentProvider其实也是通过数据库的方式来存储数据的,因此这里不再做详细介绍。
第五种 :网络存储数据 也就是说将数据保存在服务器,android上只需要通过>
你好,我试过了,这样能取到你要的结果:
用的gson-224jar包,你应该有吧,没有百度搜下去下个就好了。
import comgooglegsonJsonArray;import comgooglegsonJsonObject;
import comgooglegsonJsonParser;
public class MyTest {
public static void main(String[] args) {
String json = "{'resultcode':'200','reason':'ReturnSuccessd!','result':{'data':[{'MCC':'460','MNC':'1','LNG':'120721423','LAT':'3129854','O_LNG':'12072577772352','O_LAT':'31296529947917','PRECISION':'1101','ADDRESS':'江苏省苏州市吴中区金鸡湖大道368号'}]}}";
JsonParser jsonParser = new JsonParser();
JsonObject jsonObj = jsonParserparse(json)getAsJsonObject();
JsonObject result = jsonObjget("result")getAsJsonObject();
JsonArray data = resultget("data")getAsJsonArray();
String O_LNG = dataget(0)getAsJsonObject()get("O_LNG")getAsString();
String O_LAT = dataget(0)getAsJsonObject()get("O_LAT")getAsString();
String ADDRESS = dataget(0)getAsJsonObject()get("ADDRESS")getAsString();
Systemoutprintln(O_LNG);
Systemoutprintln(O_LAT);
Systemoutprintln(ADDRESS);
}
}
Android开发中如何解析JSON数据格式?
1JSON解析
(1)解析Object之一:
1 {"url":">
以上就是关于android 怎么看json数据格式全部的内容,包括:android 怎么看json数据格式、android怎么得到php发来的json数据、求助android解析JSON的问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)