Android笔记(五十) Android中的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;
- }
- }
- // 往sdcard中写入文件
- private void 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 + "/" + packageName);
- if (!sdCardPackagePath.exists()) {
- if (sdCardPackagePath.mkdir()) {
- Log.d("TTTT", "创建目录成功");
- } else {
- Log.d("TTTT", "创建目录不成功");
- }
- }
- File jsonFile = new File(sdCardPackagePath + "/" + 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();
- }
- }
- // 读取assets目录中的json文件
- private void 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();
- }
- }
- }
activity_main.xml
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical"
- android:paddingBottom="@dimen/activity_vertical_margin"
- android:paddingLeft="@dimen/activity_horizontal_margin"
- android:paddingRight="@dimen/activity_horizontal_margin"
- android:paddingTop="@dimen/activity_vertical_margin"
- tools:context="cn.lixyz.jsontest.activity.MainActivity" >
- <Button
- android:id="@+id/bt_writejson"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:onClick="clickButton"
- android:text="@string/writejson" />
- <Button
- android:id="@+id/bt_readjson"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:onClick="clickButton"
- android:text="@string/readjson" />
- </LinearLayout>
/assets/test.json
- {
- "student":[
- {"id":1,"name":"张三","age":10},
- {"id":2,"name":"李四","age":11},
- {"id":3,"name":"王五","age":12},
- {"id":4,"name":"赵六","age":13},
- {"id":5,"name":"孙七","age":14},
- {"id":6,"name":"刘八","age":15},
- ],
- "class":"三年二班"
- }
Android笔记(五十) Android中的JSON数据的更多相关文章
- Android(java)学习笔记208:Android中操作JSON数据(Json和Jsonarray)
1.Json 和 Xml JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的 ...
- Android(java)学习笔记151:Android中操作JSON数据(Json和Jsonarray)
1.Json 和 Xml JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的 ...
- 截取HTML中的JSON数据并利用GSON进行解析(Android)
截取HTML中的JSON数据并利用GSON进行解析(Android) 前言 最近在做的一个Android项目,需要自行搭建服务器,队友选择买了阿里云的服务器ESC产品,在数据获取上,我们采用了Andr ...
- python3.4学习笔记(二十六) Python 输出json到文件,让json.dumps输出中文 实例代码
python3.4学习笔记(二十六) Python 输出json到文件,让json.dumps输出中文 实例代码 python的json.dumps方法默认会输出成这种格式"\u535a\u ...
- 【Spring学习笔记-MVC-3.1】SpringMVC返回Json数据-方式1-扩展
<Spring学习笔记-MVC>系列文章,讲解返回json数据的文章共有3篇,分别为: [Spring学习笔记-MVC-3]SpringMVC返回Json数据-方式1:http://www ...
- 关于mysql中存储json数据的读取问题
在mysql中存储json数据,字段类型用text,java实体中用String接受. 返回前端时(我这里返回前端的是一个map),为了保证读取出的数据排序错乱问题,定义Map时要用LinkedHas ...
- JMeter 中对于Json数据的处理方法
JMeter中对于Json数据的处理方法 http://eclipsesource.com/blogs/2014/06/12/parsing-json-responses-with-jmeter/ J ...
- java读取url中json文件中的json数据
有时候需要远程从其他接口中获取json数据,如果遇到返回的json数据是一个文件而不直接是数据,那么可以通过以下方法进行读取: /** * 从数据接口获取到数据 * @return * @throws ...
- vue中引入json数据,不用本地请求
1.我的项目结构,需要在Daily.vue中引入daily.js中的json数据 2.把json数据放入一个js文件中,用exports导出,vscode的json格式太严格了,很多数据,调了一个多小 ...
- ASP.NET Core中返回 json 数据首字母大小写问题
ASP.NET Core中返回 json 数据首字母大小写问题 在asp.net core中使用ajax请求动态绑定数据时遇到该问题 后台返回数据字段首字母为定义的大写,返回的数据没有问题 但是在前台 ...
随机推荐
- ubuntu16上部署confluence-6.14.5的迁移
author:headsen chen date: 2019-10-18 15:02:06 notice :created by headsen chen himself and not al ...
- win10下通过npm成功搭建react开发环境
1.安装node-v12.13.1-x64(LTS) 2.安装creatre-react-app: npm install -g create-react-app 3.通过create-react-a ...
- visual studio(vs)初始化
cmd 进入到 devenv.exe 所在目录 执行一下命令 devenv.exe /setup /resetuserdata /resetsettings
- 【转载】 《Human-level concept learning through probabilistic program induction》阅读笔记
原文地址: https://blog.csdn.net/ln1996/article/details/78459060 --------------------- 作者:lnn_csdn 来源:CSD ...
- 最稳定万能vip视频解析接口 支持HTTPS
最稳定万能vip视频解析接口 支持HTTPS https://cdn.yangju.vip/k/?url=后面加上播放的地址即可 https://cdn.yangju.vip/k/?url= http ...
- sql 表的连接 inner join、full join、left join、right join、natural join
一.内连接-inner jion : SELECT * FROM table1 INNER JOIN table2 ON table1.field1 compopr table2.field2 INN ...
- Jetson TX2
NVIDIA Jetson TX2作为一个嵌入式平台的深度学习端,具备不错的GPU性能,可以发现TX2的GPU的计算能力是6.2.这意味着TX2对半精度运算有着良好的支持,因此,完全可以在桌面端训练好 ...
- KAFA架构及其基本概念
1.目标 - KAFA价格 在我们上一篇Kafka教程中,我们讨论了Kafka用例和应用程序.今天,在这个Kafka教程中,我们将讨论Kafka Architecture.在这篇Kafka Archi ...
- 在Firefox中操作iframe的一个小问题
在做一个 Web 的打印功能时,需要将被打印的文档写到 iframe 的 document 中. <!doctype html> <html lang="en"& ...
- [NOI2008]志愿者招募 (费用流)
大意: $n$天, 第$i$天要$a_i$个志愿者. $m$种志愿者, 每种无限多, 第$i$种工作时间$[s_i,t_i]$花费$c_i$, 求最少花费. 源点$S$连第一天, 容量$INF$ 第$ ...