編輯:關於android開發
一.JSON的簡介:
JSON建構於兩種結構:
(1)“名稱/值”對的集合(A collection of name/value pairs)。不同的語言中,它被理解為對象(object),紀錄(record),結構(struct),字典(dictionary),哈希表(hash table),有鍵列表(keyed list),或者關聯數組 (associative array)。
(2)值的有序列表(An ordered list of values)。在大部分語言中,它被理解為數組(array)。
這些都是常見的數據結構。事實上大部分現代計算機語言都以某種形式支持它們。這使得一種數據格式在同樣基於這些結構的編程語言之間交換成為可能。
JSON具有以下這些形式:
對象是一個無序的“‘名稱/值’對”集合。一個對象以“{”(左括號)開始,“}”(右括號)結束。每個“名稱”後跟一個“:”(冒號);“‘名稱/值’ 對”之間使用“,”(逗號)分隔。
數組是值(value)的有序集合。一個數組以“[”(左中括號)開始,“]”(右中括號)結束。值之間使用“,”(逗號)分隔。
值(value)可以是雙引號括起來的字符串(string)、數值(number)、true
、false
、 null
、對象(object)或者數組(array)。這些結構可以嵌套。
字符串(string)是由雙引號包圍的任意數量Unicode字符的集合,使用反斜線轉義。一個字符(character)即一個單獨的字符串(character string)。
字符串(string)與C或者Java的字符串非常相似。
數值(number)也與C或者Java的數值非常相似。除去未曾使用的八進制與十六進制格式。除去一些編碼細節。
二.ANDROID中JSON的API簡介:
1.JSONObject,JSONArry,JSONStringer類構建json文件
2.getType可以將要獲取的鍵的值轉換為指定的類型,如果無法轉換或沒有值得時候拋出異常JSONRException
optType也可以將要獲取的鍵的值轉換為指定的類型,如果無法轉換或沒有值得時候返回用戶提供或默認提供的值
三.Android中對於JSON的使用:
界面:
MainActivity的主要代碼:
package com.example.creatjson; import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends Activity { private JSONObject mContactJson; private File file = null; private FileOutputStream fileOutputStream = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); } private void init() { Button btCreatJSON = (Button) findViewById(R.id.bt_write_json); btCreatJSON.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, ShowJSON.class); intent.putExtra("JSON", creatJSON()); startActivity(intent); } }); Button btReadJSON = (Button) findViewById(R.id.bt_read_json); btReadJSON.setOnClickListener(new OnClickListener() { String line; @Override public void onClick(View v) { try { InputStreamReader inputStreamReader = new InputStreamReader( getAssets().open("Json.json"), "UTF-8"); BufferedReader bufferedReader = new BufferedReader( inputStreamReader); StringBuilder stringBuilder = new StringBuilder(); while ((line = bufferedReader.readLine()) != null) { stringBuilder.append(line); } inputStreamReader.close(); bufferedReader.close(); JSONObject mContactJson = new JSONObject(stringBuilder .toString()); line = null; line += "stranger:" + mContactJson.get("stranger") + "\n"; JSONArray jsonArray = mContactJson.getJSONArray("friend"); for (int i = 0; i < jsonArray.length(); i++) { JSONObject jsonObject = jsonArray.getJSONObject(i); line += "friendname:" + jsonObject.getString("friendname") + " number:" + jsonObject.getString("number") + "\n"; } } catch (Exception e) { e.printStackTrace(); } Intent intent = new Intent(MainActivity.this, ShowJSON.class); intent.putExtra("JSON", line); startActivity(intent); } }); } private String creatJSON() { try { mContactJson = new JSONObject(); JSONArray mFriend = new JSONArray(); JSONObject friend1 = new JSONObject(); friend1.put("friendname", "zhangsan"); friend1.put("number", "131456789"); JSONObject friend2 = new JSONObject(); friend2.put("friendname", "lisi"); friend2.put("number", "131456789"); JSONObject friend3 = new JSONObject(); friend3.put("friendname", "liuwu"); friend3.put("number", "131456789"); mFriend.put(friend1); mFriend.put(friend2); mFriend.put(friend3); mContactJson.put("friend", mFriend); mContactJson.put("stranger", "134651313"); } catch (JSONException e) { e.printStackTrace(); } return mContactJson.toString(); } }
android Unable toexecute dex: method ID not in [0, 0xffff]: 65536問題 作為一名Android開發者,相
Android Studio導入第三方類庫的方法,androidstudio一、導入*.jar包 1.直接copy ①復制*.jar包,粘貼到主工程目錄的libs下邊 &
基於CoordinatorLayout實現向上滾動導航條ToolBar滾出、向下滾動導航條滾出,coordinatorlayout activ
算法—優先隊列,許多應用程序都需要處理有序的元素,但不一定要求它們全部有序,或是不一定要一次就將它們排序。很多情況下我們會收集一些元素,處理當前鍵值最大的元素,然後再收集