JSON

Android笔记(五十) Android中的JSON数据

字号+ 作者:H5之家 来源:H5之家 2017-10-16 17:00 我要评论( )

Android笔记(五十) Android中的JSON数据,JSON是什么:JSON是轻量级的文本数据交换格式JSON独立于语言和平台JSON具有自我描述性,更容易理解JSON语法:数据在名

JSON是什么:

JSON是轻量级的文本数据交换格式

JSON独立于语言和平台

JSON具有自我描述性,更容易理解

JSON语法:

数据在名称/值对中

数据由逗号分割

大括号表示对象

中括号表示数组

JSON使用:

MainActivity.java

package cn.lixyz.jsontest.activity; import java.io.BufferedReader; import java.io.File; import java.io.FileWriter; 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.os.Bundle; import android.os.Environment; import android.util.Log; import android.view.View; import cn.lixyz.jsontest.R; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void clickButton(View v) { switch (v.getId()) { case R.id.bt_readjson: readJson(); break; case R.id.bt_writejson: writeJson(); break; } } writeJson() { // 创建一个json对象 JSONObject root = new JSONObject(); try { // 使用put(kay,value)插入元素 root.put("class", "三年二班"); // 常见若干对象,用以加入数组 JSONObject student1 = new JSONObject(); student1.put("id", 1); student1.put("name", "张三"); student1.put("age", 10); JSONObject student2 = new JSONObject(); student2.put("id", 2); student2.put("name", "李四"); student2.put("age", 11); JSONObject student3 = new JSONObject(); student3.put("id", 3); student3.put("name", "王五"); student3.put("age", 13); JSONObject student4 = new JSONObject(); student4.put("id", 4); student4.put("name", "赵六"); student4.put("age", 14); JSONObject student5 = new JSONObject(); student5.put("id", 5); student5.put("name", "孙七"); student5.put("age", 15); JSONObject student6 = new JSONObject(); student6.put("id", 6); student6.put("name", "刘八"); student6.put("age", 16); // 创建一个json数组 JSONArray array = new JSONArray(); // 将之前创建的json对象添加进来 array.put(student1); array.put(student2); array.put(student3); array.put(student4); array.put(student5); array.put(student6); // 将json数组添加 root.put("student", array); Log.d("TTTT", array.toString()); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } String packageName = this.getPackageName(); String jsonFileName = "json.json"; String sdCardPath = Environment.getExternalStorageDirectory().toString(); File sdCardPackagePath = new File(sdCardPath + "http://www.a004.cn/" + packageName); if (!sdCardPackagePath.exists()) { if (sdCardPackagePath.mkdir()) { Log.d("TTTT", "创建目录成功"); } else { Log.d("TTTT", "创建目录不成功"); } } File jsonFile = new File(sdCardPackagePath + "http://www.a004.cn/" + jsonFileName); if (!jsonFile.exists()) { try { if (jsonFile.createNewFile()) { Log.d("TTTT", "创建文件成功"); } else { Log.d("TTTT", "创建文件失败"); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } try { // 将json数据写入文件 FileWriter fileWriter = new FileWriter(jsonFile); fileWriter.write(root.toString()); fileWriter.flush(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } readJson() { try { // 读取assets目录下的json文件 InputStreamReader isr = new InputStreamReader(getAssets().open("test.json"), "UTF-8"); BufferedReader br = new BufferedReader(isr); String line; StringBuilder builder = new StringBuilder(); while ((line = br.readLine()) != null) { builder.append(line); } br.close(); // 获取到json文件中的对象 JSONObject root = new JSONObject(builder.toString()); // 使用getString(key)方式获取value Log.d("TTTT", "class=" + root.getString("class")); // 获取json数组 JSONArray array = root.getJSONArray("student"); for (int i = 0; i < array.length(); i++) { JSONObject student = array.getJSONObject(i); Log.d("TTTT", "id=" + student.getInt("id") + ",name=" + student.getString("name") + ",age=" + student.getInt("age")); } } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
网友点评