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请求动态绑定数据时遇到该问题 后台返回数据字段首字母为定义的大写,返回的数据没有问题 但是在前台 ...
随机推荐
- apt与apt-get命令的区别
apt 和 apt-get的区别 Debian 作为 Ubuntu.Linux Mint 和 elementary OS 等 Linux 操作系统的母板,其具有强健的「包管理」系统,它的每个组件和应用 ...
- Mac 上ssh远程连接Linux服务器提示Host key verification failed.
当我们对重装远程服务器的时候会出现Host key verification failed问题 解决办法: rm -rf ~/.ssh/known_hosts 重新ssh连接,OK!
- 必备Mysql命令
文章来源:https://macrozheng.github.io/mall-learning/#/reference/mysql 开发者必备Mysql命令 开发者必备Mysql常用命令,涵盖了数据定 ...
- 【翻译】Flink Table Api & SQL — Hive Beta
本文翻译自官网:Hive Beta https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/table/hive/ Flink ...
- 两种Redis持久化原理的详解
Redis为持久化提供了两种方式: RDB:在指定的时间间隔能对你的数据进行快照存储. AOF:记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据. 本文将通过下面内容的介 ...
- Postman:上传文件测试
1.设置好接口地址与提交方法 2.设置header Content-Type:multipart/form-data 3.设置body 选择为:form-data key要和服务器端保持一致 选择好自 ...
- [LeetCode] 337. House Robber III 打家劫舍 III
The thief has found himself a new place for his thievery again. There is only one entrance to this a ...
- MAVEN安装代码到本地库,安装jar, source, javadoc的方式
cd /d %~dp0 mvn -Dpackaging=jar mvn -Dpackaging=jar -Dclassifier=sources mvn -Dpackaging=jar -Dclass ...
- mybatis中封装结果集常见示例
1.返回一个对象 public interface EmployeeMapper { public Employee getEmpByMap(Map<String, Object> map ...
- R统计数据框的行数
如下三种方法可以实现 使用dim函数 dim(dataframe)[0] 使用nrow函数 nrow(dataframe) 使用length函数统计 length(dataframe[,1])