android 怎么看json数据格式

android 怎么看json数据格式,第1张

给服务端发送请求后,服务端会返回一连串的数据,这些数据在大部分情况下都是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的问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10186578.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存