json數(shù)據(jù)的解析相對而言,還是比較容易的,實現(xiàn)的代碼也十分簡單。這里用的是jsonReade方法來進行json數(shù)據(jù)解析。

創(chuàng)新互聯(lián)專注于合江網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供合江營銷型網(wǎng)站建設(shè),合江網(wǎng)站制作、合江網(wǎng)頁設(shè)計、合江網(wǎng)站官網(wǎng)定制、微信小程序服務(wù),打造合江網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供合江網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
1.在解析之前,大家需要知道什么是json數(shù)據(jù)。
json數(shù)據(jù)存儲的對象是無序的“名稱/值”對的集合。和其他的數(shù)據(jù)存儲方式相比,json數(shù)據(jù)的可讀性,可擴展性,編碼難度,解碼難度都有一定的優(yōu)勢。在json數(shù)據(jù)中,
對于一個對象:
(1)一個對象以“{”(左括號)開始,“}”(右括號)結(jié)束。
(2)每個“名稱”后跟一個“:”(冒號);
(3)“‘名稱/值’對”之間使用“,”(逗號)分隔。
對于一個數(shù)組:
(1)一個數(shù)組以“[”(左中括號)開始,“]”(右中括號)結(jié)束。
(2)值之間使用“,”(逗號)分隔。
下面是android官方給出的一組json數(shù)據(jù)示例:
[
{
"id": 912345678901,
"text": "How do I read JSON on Android?",
"geo": null,
"user": {
"name": "android_newb",
"followers_count": 41
}
},
{
"id": 912345678902,
"text": "@android_newb just useandroid.util.JsonReader!",
"geo": [50.454722, -104.606667],
"user": {
"name": "jesse",
"followers_count": 2
}
}
]
在代碼中,如果直接定義json數(shù)據(jù),需要在代碼中對“ 使用 \ 轉(zhuǎn)義。上面json在代碼中的形式為:(在java代碼中,創(chuàng)建一段json數(shù)據(jù),“ 符號需要轉(zhuǎn)義)
private String jsonDate = "["
+ "{\"id\": 912345678901,"
+ "\"text\":\"How do I read JSON onAndroid?\","
+ "\"geo\":null,"
+"\"user\":{\"name\":\"android_newb\",\"followers_count\":41}},"
+ "{\"id\": 912345678902,"
+ "\"text\":\"@android_newb just useandroid.util.JsonReader!\","
+ "\"geo\":[50.454722,-104.606667],"
+"\"user\":{\"name\":\"jesse\",\"followers_count\":2}}"
+ "]";
1. 使用JsonReader方法解析Json數(shù)據(jù)對象,你需要創(chuàng)建一個JsonReader對象.
2.然后使用beginArray()來開始解析 [ 左邊的第一個數(shù)組。
3.再使用beginObject()來開始解析數(shù)組{中的第一個對象。
4.對于直接的數(shù)據(jù)可以直接得到解析到的數(shù)據(jù),但對于在json中嵌套了數(shù)組的數(shù)據(jù),需要在寫一個解析方法。
5.在解析完成后,別忘用endArray(),endObject()來關(guān)閉解析。
package com.mecury.jsontest;
import java.io.IOException;
import java.io.StringReader;
import android.util.JsonReader;
import android.util.JsonToken;
public class JsonUtils {
public void parseJson(String jsonDate) throws IOException{
//創(chuàng)建JsonReader對象
JsonReader jsReader = new JsonReader(new StringReader(jsonDate));
jsReader.beginArray();
while (jsReader.hasNext()) {
readMessage(jsReader);
}
jsReader.endArray();
}
public void readMessage(JsonReader jsReader) throws IOException{
jsReader.beginObject();
while(jsReader.hasNext()){
String tagName =jsReader.nextName();
if(tagName.equals("id")) {
System.out.println("name:"+jsReader.nextLong());
}else if(tagName.equals("text")) {
System.out.println("text:"+jsReader.nextString());
}else if(tagName.equals("geo") && jsReader.peek()!=JsonToken.NULL) {
readDoubleArray(jsReader);
}else if(tagName.equals("user")) {
readUser(jsReader);
}else {
//跳過當(dāng)前值
jsReader.skipValue();
System.out.println("skip======>");
}
}
jsReader.endObject();
}
//解析geo中的數(shù)據(jù)
public void readDoubleArray(JsonReader jsReader) throws IOException{
jsReader.beginArray();
while(jsReader.hasNext()){
System.out.println(jsReader.nextDouble());
}
jsReader.endArray();
}
//由于讀取user中的數(shù)據(jù)
public void readUser(JsonReader jsReader) throws IOException{
String userName = null;
int followsCount = -1;
jsReader.beginObject();
while (jsReader.hasNext()) {
String tagName = jsReader.nextName();
if (tagName.equals("name")) {
userName =jsReader.nextString();
System.out.println("user_name:"+ userName);
}else if (tagName.equals("followers_count")) {
followsCount = jsReader.nextInt();
System.out.println("followers_count:"+followsCount);
}
}
jsReader.endObject();
}
}
對上面的內(nèi)容解析的輸出:
11-22 06:59:52.441: I/System.out(5329):name:912345678901 11-22 06:59:52.441: I/System.out(5329):text:How do I read JSON on Android? 11-22 06:59:52.461: I/System.out(5329):skip======> 11-22 06:59:52.461: I/System.out(5329):user_name:android_newb 11-22 06:59:52.471: I/System.out(5329):followers_count:41 11-22 06:59:52.481: I/System.out(5329):name:912345678902 11-22 06:59:52.491: I/System.out(5329):text:@android_newb just use android.util.JsonReader! 11-22 06:59:52.500: I/System.out(5329):50.454722 11-22 06:59:52.500: I/System.out(5329):-104.606667 11-22 06:59:52.510: I/System.out(5329):user_name:jesse 11-22 06:59:52.510: I/System.out(5329):followers_count:2
以上!另外對APP進行在線全方位的安全性、兼容性測試,我都會用這個:www.ineice.com。
當(dāng)前文章:Android之json數(shù)據(jù)的解析(jsonReader)
網(wǎng)頁URL:http://www.chinadenli.net/article26/piijjg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、移動網(wǎng)站建設(shè)、App設(shè)計、定制開發(fā)、品牌網(wǎng)站建設(shè)、云服務(wù)器
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)