android能看json吗,json android

本文目录一览:

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的编辑弱爆了!!!

转载

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/185288.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-11-26 12:18
下一篇 2024-11-26 12:18

相关推荐

  • JSON的MD5

    在Web开发过程中,JSON(JavaScript Object Notation)是最常用的数据格式之一。MD5(Message-Digest Algorithm 5)是一种常用…

    编程 2025-04-29
  • 使用Java将JSON写入HDFS

    本篇文章将从以下几个方面详细阐述Java将JSON写入HDFS的方法: 一、HDFS简介 首先,先来了解一下Hadoop分布式文件系统(HDFS)。HDFS是一个可扩展性高的分布式…

    编程 2025-04-29
  • Android ViewPager和ScrollView滑动冲突问题

    Android开发中,ViewPager和ScrollView是两个常用的控件。但是当它们同时使用时,可能会发生滑动冲突的问题。本文将从多个方面介绍解决Android ViewPa…

    编程 2025-04-28
  • 如何使用Newtonsoft datatable转Json

    Newtonsoft DataTable 是一个基于.NET的JSON框架,也是一个用于序列化和反序列化JSON的强大工具。 在本文中,我们将学习如何使用Newtonsoft Da…

    编程 2025-04-28
  • Android如何点击其他区域收起软键盘

    在Android应用中,当输入框获取焦点弹出软键盘后,我们希望能够点击其他区域使软键盘消失,以提升用户体验。本篇文章将说明如何实现这一功能。 一、获取焦点并显示软键盘 在Andro…

    编程 2025-04-28
  • JPRC – 轻松创建可读性强的 JSON API

    本文将介绍一个全新的 JSON API 框架 JPRC,通过该框架,您可以轻松创建可读性强的 JSON API,提高您的项目开发效率和代码可维护性。接下来将从以下几个方面对 JPR…

    编程 2025-04-27
  • Python存为JSON的方法及实例

    本文将从以下多个方面对Python存为JSON做详细的阐述。 一、JSON简介 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅…

    编程 2025-04-27
  • 使用Python获取JSON并解析

    本文将介绍如何使用Python获取JSON数据并解析相关内容。通过使用Python的第三方库,我们可以轻松地处理JSON数据,包括读取、提取和操作JSON数据。 一、获取JSON数…

    编程 2025-04-27
  • 使用Spread 8展示JSON数据

    使用Spread 8可以方便地展示JSON数据,本文将详细介绍如何利用Spread 8展示JSON数据。 一、Spread 8简介 Spread 8是一款强大的电子表格软件,可以方…

    编程 2025-04-27
  • 如何在json转实体类时忽略大小写

    本文将从以下几个方面介绍如何在json转实体类时忽略大小写。 一、使用Gson库实现json转实体类忽略大小写 Gson是Google提供的Java JSON操作库,它提供了简单易…

    编程 2025-04-27

发表回复

登录后才能评论