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请求动态绑定数据时遇到该问题 后台返回数据字段首字母为定义的大写,返回的数据没有问题 但是在前台 ...
随机推荐
- nginx-rtmp
最近使用ffmpeg推流为rtmp,进行直播.记录一下nginx-rtmp的配置.因为我们要添加ngin-rtmp模块,所以不能直接apt安装. 下载niginx和nginx-rtmp-module的 ...
- osg指定向量旋转指定角度
向量AB,沿着n旋转10度 osg::Vec3 left = AB*osg::Matrix::rotate(osg::inDegrees(10), n); osg::Vec3 right = AB*o ...
- 为CentOS安装python3
摘自:https://www.jianshu.com/p/7c2b62c37223 1. 安装依赖 不要复制往下看 yum install openssl-devel bzip2-devel expa ...
- SpringBoot系列教程web篇之Get请求参数解析姿势汇总
一般在开发web应用的时候,如果提供http接口,最常见的http请求方式为GET/POST,我们知道这两种请求方式的一个显著区别是GET请求的参数在url中,而post请求可以不在url中:那么一个 ...
- JAVA windows环境配置,jdk的安装配置
一.需要的文件与下载1.jdk:jdk下载:二.安装与配置1.jdk安装与路径选择 双击安装,然后一直下一步,直至完成. 这是个人的自定义的安装目录路径(安装路径可在安装的时候自行选择,) 2.jdk ...
- 「中山纪中集训省选组D2T1」书堆 欧拉常数
题目描述 蚂蚁是勤劳的动物,他们喜欢挑战极限.现在他们迎来了一个难题!蚂蚁居住在图书馆里,图书馆里有大量的书籍.书是形状大小质量都一样的矩形.蚂蚁要把这些书摆在水平桌子的边缘.蚂蚁喜欢整洁的布置,所以 ...
- LeetCode 856. 括号的分数(Score of Parentheses)
856. 括号的分数 856. Score of Parentheses 题目描述 给定一个平衡括号字符串 S,按下述规则计算该字符串的分数: () 得 1 分. AB 得 A + B 分,其中 A ...
- html2canvas以及domtoimage的使用踩坑总结
前言 首先做个自我介绍,我是成都某企业的一名刚刚入行约一年的前端,在之前的开发过程中,遇到了问题,也解决了问题,但是在下一次解决相同问题的时候,只对这个问题有一丝丝的印象,还需要从新去查找,于是,我注 ...
- Spring MVC异常处理代码完整实例
Spring MVC异常处理流程: 提供构造方法传值: 配置异常处理器的bean
- AS3灰色图像
一开始觉得AS3的滤镜很难使用,尤其是那些矩阵,让人望而生畏.最近写一个聊天模块,要用到离线状态下的灰色头像,于是认真研究了ColorMatrixFilter,发现其实也没有那么难.所谓的矩阵其实就是 ...