Android入门之json解析
2016-11-03 21:27
357 查看
首先,JSON是一种轻量级的数据交换格式。易于人阅读和编写,同时也易于机器解析和生成。
JSON建构于两种结构:“名称/值”对的集合。不同的语言中,它被理解为对象,记录等。
值的有序列表。大部分语言中,它被理解为数组。
JSON具有以下这些形式:
对象(object)是一个无序的“名称/值”对的集合。一个对象以“{”开始,“}”结束。每个名称之后跟一个“:”,“名称/值”对之间使用“,”分隔。
数组(array)是值的有序集合,一个数组以“[”开始,“]”结束。值之间用逗号分隔。
值(value)可以是双引号括起来的字符串,数值(number)、true、false、null、对象,或者数组。这些结构可以嵌套。
字符串(string)是由双引号包围的任意数量unicode字符的集合,使用反斜线转义。一个字符即一个单独的字符串。
数值(number)与C或者java的数值相似。
object{}
{ members }memberspair
pair , memberspairstring : valuearray[]
[ elements ]elementsvalue
value , elementsvaluestring
number
object
array
true
false
nullstring""
" chars "charschar
char charscharany-Unicode-character-
except-"-or-\-or-
control-character
\"
\\
\/
\b
\f
\n
\r
\t
\u four-hex-digitsnumberint
int frac
然后是json在android中的解析。例如解析以下Json片段:
{
"poster_path":"\/uSHjeRVuObwdpbECaXJnvyDoeJK.jpg",
"adult":false,
"overview":"A teenager finds himself transported to an island where he must help protect a group of orphans with special powers from creatures intent on destroying them.",
"release_date":"2016-09-28",
"genre_ids":[
14
],
"id":283366,
"original_title":"Miss Peregrine's Home for Peculiar Children",
"original_language":"en",
"title":"Miss Peregrine's Home for Peculiar Children",
"backdrop_path":"\/qXQinDhDZkTiqEGLnav0h1YSUu8.jpg",
"popularity":21.385542,
"vote_count":185,
"video":false,
"vote_average":6.1
}
简单的解析有以下代码片段示例:
String reponse=null;
URL url=new URL(requrl);//requrl为获得json内容的网址
HttpURLConnection conn=(HttpURLConnection)url.openConnection();
conn.setRequestMethod("GET");
InputStream in=new BufferedInputStream(conn.getInputStream());
BufferedReader reader=new BufferedReader(new InputStreamReader(in));
StringBuilder sb=new StringBuilder();
String line;
while((line=reader.readLine())!=null) sb.append(line).append('\n');
reponse=sb.toString();
JSONObject js=new JSONObject(reponse);//用JSONObject来获取json对象
JSONArray contacts=js.getJSONArray("result");//用JSONObject来获取json数组
for(int i=0;i<contacts.length();i++){
JSONObjcet c=contacts.getJSONObjcet(i);//获取数组中的对象,每一个对象内容都与上述过程中给出的json代码块格式相同
String id=c.getString("id");
String poster=c.getString("poster_path");
String overview=c.getString("overview");
}
以上是json解析的一些基本的关键代码,在最后的for循环体重已经将上述中给出的json片段中的id、poster_path、overview的内容存储到了变量中。在实际应用中,需要将上述代码段写入try...catch中。网络连接和json解析都是较为耗时的工作,都不能再UI线程中执行。所以上述代码需要利用asynctesk或者是service。
JSON建构于两种结构:“名称/值”对的集合。不同的语言中,它被理解为对象,记录等。
值的有序列表。大部分语言中,它被理解为数组。
JSON具有以下这些形式:
对象(object)是一个无序的“名称/值”对的集合。一个对象以“{”开始,“}”结束。每个名称之后跟一个“:”,“名称/值”对之间使用“,”分隔。
数组(array)是值的有序集合,一个数组以“[”开始,“]”结束。值之间用逗号分隔。
值(value)可以是双引号括起来的字符串,数值(number)、true、false、null、对象,或者数组。这些结构可以嵌套。
字符串(string)是由双引号包围的任意数量unicode字符的集合,使用反斜线转义。一个字符即一个单独的字符串。
数值(number)与C或者java的数值相似。
object{}
{ members }memberspair
pair , memberspairstring : valuearray[]
[ elements ]elementsvalue
value , elementsvaluestring
number
object
array
true
false
nullstring""
" chars "charschar
char charscharany-Unicode-character-
except-"-or-\-or-
control-character
\"
\\
\/
\b
\f
\n
\r
\t
\u four-hex-digitsnumberint
int frac
然后是json在android中的解析。例如解析以下Json片段:
{
"poster_path":"\/uSHjeRVuObwdpbECaXJnvyDoeJK.jpg",
"adult":false,
"overview":"A teenager finds himself transported to an island where he must help protect a group of orphans with special powers from creatures intent on destroying them.",
"release_date":"2016-09-28",
"genre_ids":[
14
],
"id":283366,
"original_title":"Miss Peregrine's Home for Peculiar Children",
"original_language":"en",
"title":"Miss Peregrine's Home for Peculiar Children",
"backdrop_path":"\/qXQinDhDZkTiqEGLnav0h1YSUu8.jpg",
"popularity":21.385542,
"vote_count":185,
"video":false,
"vote_average":6.1
}
简单的解析有以下代码片段示例:
String reponse=null;
URL url=new URL(requrl);//requrl为获得json内容的网址
HttpURLConnection conn=(HttpURLConnection)url.openConnection();
conn.setRequestMethod("GET");
InputStream in=new BufferedInputStream(conn.getInputStream());
BufferedReader reader=new BufferedReader(new InputStreamReader(in));
StringBuilder sb=new StringBuilder();
String line;
while((line=reader.readLine())!=null) sb.append(line).append('\n');
reponse=sb.toString();
JSONObject js=new JSONObject(reponse);//用JSONObject来获取json对象
JSONArray contacts=js.getJSONArray("result");//用JSONObject来获取json数组
for(int i=0;i<contacts.length();i++){
JSONObjcet c=contacts.getJSONObjcet(i);//获取数组中的对象,每一个对象内容都与上述过程中给出的json代码块格式相同
String id=c.getString("id");
String poster=c.getString("poster_path");
String overview=c.getString("overview");
}
以上是json解析的一些基本的关键代码,在最后的for循环体重已经将上述中给出的json片段中的id、poster_path、overview的内容存储到了变量中。在实际应用中,需要将上述代码段写入try...catch中。网络连接和json解析都是较为耗时的工作,都不能再UI线程中执行。所以上述代码需要利用asynctesk或者是service。
相关文章推荐
- [入门阅读]怎样在android中解析JSON
- Android入门——数据解析之创建及使用JSON字符串(一)
- Android解析JSON入门教程
- Android基础入门教程——7.2.2 Android JSON数据解析
- [入门阅读]怎样在android中解析JSON
- Android基础入门教程——7.2.2 Android JSON数据解析
- Xamarin.Android 入门实例(1)之获取与解析JSON
- [入门阅读]怎样在android中解析JSON
- Android入门(二十二)解析JSON
- android 解析json数据格式
- Android JSON解析类 - JsonReader
- [Android]四种方式解析字符串----JSON、SAX、DOM、XML
- android 解析json数据格式
- android解析JSON字符串
- Android学习之JSON数据解析
- Android中json的解析
- android 解析json数据格式
- android 解析json数据格式
- Android学习之JSON数据解析
- Android学习之JSON数据解析