首页 > 编程知识 正文

android能看json吗,json android

时间:2023-12-27 22:27:40 阅读:326475 作者:ZGHL

本文目录一览:

json是什么格式,在安卓手机上用什么打开

json就是一个字符串,类似树形结构。

只要没加过密,一般的文本编辑器就可以打开。

android怎么看json数据格式?

JSON有两种表示结构,对象和数组。

对象结构以”{”大括号开始,以”}”大括号结束。中间部分由0或多个以”,”分隔的”key(关键字)/value(值)”对构成,关键字和值之间以”:”分隔,语法结构如下

{

key1:value1,

key2:value2,

}其中关键字是字符串,而值可以是字符串,数值,true,false,null,对象或数组

数组结构以”[”开始,”]”结束。中间由0或多个以”,”分隔的值列表组成,语法结构如下

[

{

key1:value1,

key2:value2

},

{

key3:value3,

key4:value4

}

]

给服务端发送请求后,服务端会返回一连串的数据,这些数据在大部分情况下都是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":"中国"}}

]

android 解析json用那个包里面的方法比较好呢?

android 解析json还有用Google出品的Gson比较好,具体步骤为:

1、首先,从 code.google.com/p/google-gson/downloads/list下载GsonAPI:

google-gson-1.7.1-release.zip 把gson-1.7.jar copy到libs(项目根目录新建一个libs文件夹)中。 可以使用以下两种方法解析JSON数据,通过获取JsonReader对象解析JSON数据。

代码如下:

String jsonData = "[{"username":"arthinking","userId":001},{"username":"Jason","userId":002}]";

try{

JsonReader reader = new JsonReader(new StringReader(jsonData));

reader.beginArray();

while(reader.hasNext()){

reader.beginObject();

while(reader.hasNext()){

String tagName = reader.nextName();

if(tagName.equals("username")){

System.out.println(reader.nextString());

}

else if(tagName.equals("userId")){

System.out.println(reader.nextString());

}

}

reader.endObject();

}

reader.endArray();

}

catch(Exception e){

e.printStackTrace();

}

2、使用Gson对象获取User对象数据进行相应的操作:

代码如下:

Type listType = new TypeTokenLinkedListUser(){}.getType();

Gson gson = new Gson();

LinkedListUser users = gson.fromJson(jsonData, listType);

for (Iterator iterator = users.iterator(); iterator.hasNext();) {

User user = (User) iterator.next();

System.out.println(user.getUsername());

System.out.println(user.getUserId());

}

3、如果要处理的JSON字符串只包含一个JSON对象,则可以直接使用fromJson获取一个User对象:

代码如下:

String jsonData = "{"username":"arthinking","userId":001}";

Gson gson = new Gson();

User user = gson.fromJson(jsonData, User.class);

System.out.println(user.getUsername());

System.out.println(user.getUserId());

android 怎么看json数据格式

给服务端发送请求后,服务端会返回一连串的数据,这些数据在大部分情况下都是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 = jsonObject.getString("name");

int age = jsonObject.getInt("age");

boolean male = jsonObject.getBoolean("male");

//接下来该干嘛干嘛

} catch (JSONException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

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 jsonArray.length(); i++) {

jsonObject = jsonArray.getJSONObject(i);

String name = jsonObject.getString("name");

int age = jsonObject.getInt("age");

boolean male = jsonObject.getBoolean("male");

//接下来该干嘛干嘛

}

} catch (JSONException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

3.{"name":"胡小威", "age"=20, "male":true, "address":{"street":"岳麓山南", "city":"长沙","country":"中国"}}

Java代码

public void parseJsonPerson(String json) {

try {

JSONObject jsonObject = new JSONObject(json);

String name = jsonObject.getString("name");

int age = jsonObject.getInt("age");

boolean male = jsonObject.getBoolean("male");

JSONObject addressJSON = jsonObject.getJSONObject("address");

String street = addressJSON.getString("street");

String city = addressJSON.getString("city");

String country = addressJSON.getString("country");

Address address = new Address(street, city, country);

Person person = new Person(name, age, male, address);

} catch (JSONException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

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) {

ListPerson persons = new ArrayListPerson();

try {

jsonArray = new JSONArray(json);

for (int i = 0; i jsonArray.length(); i++) {

jsonObject = jsonArray.getJSONObject(i);

String name = jsonObject.getString("name");

int age = jsonObject.getInt("age");

boolean male = jsonObject.getBoolean("male");

JSONObject addressJSON = jsonObject.getJSONObject("address");

String street = addressJSON.getString("street");

String city = addressJSON.getString("city");

String country = addressJSON.getString("country");

Address address = new Address(street, city, country);

Person person = new Person(name, age, male, address);

persons.add(person);

Log.v("juno", person.toString());

}

} catch (JSONException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

Log.v("juno", persons.toString());

}

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 ListSalution parseJSON(String str){

Log.d("返回的JSON数据:", str);

ListSalution busList = new ArrayListSalution();

try {

JSONObject jsonObject = new JSONObject(str);

JSONObject busesJSON = jsonObject.getJSONObject("buses");

JSONArray busJSArray=busesJSON.getJSONArray("bus");

for(int i=0;ibusJSArray.length();i++){

JSONObject busJSObject = busJSArray.getJSONObject(i);

JSONObject segsJSObject=busJSObject.getJSONObject("segments");

JSONArray segJSArray=segsJSObject.getJSONArray("segment");

Salution st=new Salution();

for(int j=0;jsegJSArray.length();j++){

if(j==0){

JSONObject segJSObject = segJSArray.getJSONObject(j);

st.setLine_name1(segJSObject.getString("line_name"));

Log.d("line_name", segJSObject.getString("line_name"));

st.setStats1(segJSObject.getString("stats"));

st.setEnd_stat1(segJSObject.getString("end_stat"));

st.setStart_stat1(segJSObject.getString("start_stat"));

}

if(j==1){

JSONObject segJSObject = segJSArray.getJSONObject(j);

st.setLine_name2(segJSObject.getString("line_name"));

Log.d("line_name", segJSObject.getString("line_name"));

st.setStats2(segJSObject.getString("stats"));

st.setEnd_stat2(segJSObject.getString("end_stat"));

st.setStart_stat2(segJSObject.getString("start_stat"));

}

}

busList.add(st);

}

return busList;

} catch (JSONException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return null;

}

这里我只是简单获取了几个我想要的数据。

二、使用JSON类库Gson 来解析JSON

Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以将一个 JSON 字符串转成一个 Java 对象,或者反过来。

首先,从 code.google.com/p/google-gson/downloads/list下载GsonAPI

Java代码

google-gson-1.7.1-release.zip

再把gson-1.7.jar copy到libs

可以使用两种方法解析

①、通过获取JsonReader对象解析JSON数据:

Java代码

String jsonData = "[{"username":"arthinking","userId":001},{"username":"Jason","userId":002}]";

try{

JsonReader reader = new JsonReader(new StringReader(jsonData));

reader.beginArray();

while(reader.hasNext()){

reader.beginObject();

while(reader.hasNext()){

String tagName = reader.nextName();

if(tagName.equals("username")){

System.out.println(reader.nextString());

}

else if(tagName.equals("userId")){

System.out.println(reader.nextString());

}

}

reader.endObject();

}

reader.endArray();

}

catch(Exception e){

e.printStackTrace();

}

②、通过把JSON数据映射成一个对象,使用Gson对象的fromJson()方法获取一个对象数组进行操作

Java代码

Type listType = new TypeTokenLinkedListUser(){}.getType();

Gson gson = new Gson();

LinkedListUser users = gson.fromJson(jsonData, listType);

for (Iterator iterator = users.iterator(); iterator.hasNext();) {

User user = (User) iterator.next();

System.out.println(user.getUsername());

System.out.println(user.getUserId());

}

我一般是采用直接解析,添加类库神马的最讨厌了···

还有,抱怨一下,iteye的编辑弱爆了!!!

转载

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。