初識JSON

<span style="font-size: 24px; font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">	</span><span style="font-size: 24px; font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">JSON:一種輕量級的數據交換格式,具備良好的可讀和便於快速編寫的特性。業內主流技術爲其提供了完整的解決方案(有點相似於正則表達式 ,得到了當今大部分語言的支持),從而能夠在不一樣平臺間進行數據交換。JSON採用兼容性很高的文本格式,同時也具有相似於C語言體系的行爲。</span>


JSON在Android中org.json包中,主要有如下幾個類:java


JSONObject:能夠看做是一個JSON對象,這是系統中有關JSON定義的基本單元,其包含一對兒(Key/Value)數值。能夠用toString()方法輸出一個鍵值對字符串(du對外部(External:應用toString()方法輸出的數值)調用的響應體現爲一個標準的字符串)(例如:{"JSON": "Hello, World"},最外被大括號包裹,其中的Key和Value被冒號":"分隔)。其對於內部(Internal)行爲的操做格式略微,例如:初始化一個JSONObject實例,引用內部的put()方法添加數值:new JSONObject().put("JSON", "Hello, World!"),在Key和Value之間是以逗號","分隔。Value的類型包括:Boolean、JSONArray、JSONObject、Number、String或者默認值JSONObject.NULL object 。android


JSONStringer:json文本構建類 ,根據官方的解釋,這個類能夠幫助快速和便捷的建立JSON text。其最大的優勢在於能夠減小因爲 格式的錯誤致使程序異常,引用這個類能夠自動嚴格按照JSON語法規則(syntax rules)建立JSON text。每一個JSONStringer實體只能對應建立一個JSON text。。其最大的優勢在於能夠減小因爲格式的錯誤致使程序異常,引用這個類能夠自動嚴格按照JSON語法規則(syntax rules)建立JSON text。每一個JSONStringer實體只能對應建立一個JSON text。正則表達式


JSONArray:它表明一組有序的數值。將其轉換爲String輸出(toString)所表現的形式是用方括號包裹,數值以逗號」,」分隔(例如: [value1,value2,value3],你們能夠親自利用簡短的代碼更加直觀的瞭解其格式)。這個類的內部一樣具備查詢行爲,get()和opt()兩種方法均可以經過index索引返回指定的數值,put()方法用來添加或者替換數值。一樣這個類的value類型能夠包括:Boolean、JSONArray、JSONObject、Number、String或者默認值JSONObject.NULL object。json


JSONTokener:json解析類;數組


JSONException:json中用到的異常 。


自定義JSON數據:
app

{
	stuno:"58504226",
	stuname:"apollo",
	book:[
		{bookname:"C++",bookprice:12},
		{bookname:"C#",bookprice:18},
		{bookname:"JAVA",bookprice:15}
	]
}


實例:

</pre><p></p><p><span style="font-size:24px;"></span><pre name="code" class="java">package com.ytu.mode_client;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;

import org.json.JSONArray;
import org.json.JSONObject;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		try {
			// InputStream:輸入流,一個字節一個字節的讀
			InputStream is = getAssets().open("json_type.txt");
			
			// InputStreamReader:InputStream的修飾流,把is字節流包裹起來的一個裝飾流,讀入一行信息
			InputStreamReader isr = new InputStreamReader(is);
			
			// BufferedReader:裝飾流,帶緩衝的讀寫的流,包裹isr
			BufferedReader br = new BufferedReader(isr);
			
			//將成行讀出的信息存進builder
			StringBuilder builder = new StringBuilder();
			String line; 
			
			// 將文件中的信息按行讀取出來,直到爲null,將每一行的信息鏈接到builder上
			while ((line = br.readLine()) != null) {
				builder.append(line);
			}
			//打印builder中的信息
			System.out.println(builder.toString()+"----------------");
			
			// 定義JSON對象,並把上面讀取出來的builder對象轉成字符串封裝成JSON對象
			JSONObject student = new JSONObject(builder.toString());
			System.out.println(student.get("stuno"));
			// 按照字符串中鍵值對的格式,根據鍵值得到值
			String stuno = student.getString("stuno");
			String stuname = student.getString("stuname");
			//打印
			System.out
					.println("stuno:" + stuno + "----" + "stuname:" + stuname);
			// 得到JSON數組
			// 經過鍵得到book的JSON數組
			JSONArray array = student.getJSONArray("book");
			for (int i = 0; i < array.length(); i++) {
				JSONObject book = array.getJSONObject(i);
				String bookname = book.getString("bookname");
				int bookprice = book.getInt("bookprice");
				//打印
				System.out.println("bookname:" + bookname + "----"
						+ "bookprice:" + bookprice);
			}
		} catch (Exception e) {
			e.printStackTrace(); 
		}
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// Handle action bar item clicks here. The action bar will
		// automatically handle clicks on the Home/Up button, so long
		// as you specify a parent activity in AndroidManifest.xml.
		int id = item.getItemId();
		if (id == R.id.action_settings) {
			return true;
		}
		return super.onOptionsItemSelected(item);
	}
}
logcat運行輸出:

相關文章
相關標籤/搜索