Android中Json数据读取与创建的方法
作者:木头同学 发布时间:2022-01-17 23:19:48
首先介绍下JSON的定义,JSON是JavaScript Object Notation的缩写。
一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。业内主流技术为其提供了完整的解决方案(有点类似于正则表达式,获得了当今大部分语言的支持),从而可以在不同平台间进行数据交换。JSON采用兼容性很高的文本格式,同时也具备类似于C语言体系的行为。
JSON的结构:
(1) Name/Value Pairs(无序的):类似所熟知的Keyed list、 Hash table、Disctionary和Associative array。在Android平台中同时存在另外一个类 "Bundle",某种程度上具有相似的行为。
(2) Array(有序的):一组有序的数据列表。
一: Json的特性和在数据交互中的地位就不用说了,直接看案例。
首先在android studio中创建assets文件目录,用于存放Json数据文件,android studio 1.3 默认项目文件目录下是没有assets文件夹的,
所以需要我们进行创建,创建方法如下:
创建好assets文件目录以后,在其目录下创建一个Text.json文件。
二:如何获得assets文件目录下的Json数据:
在eclipse下是:InputStreamReader(getAssets().open("Text.json"),"UTF-8");获得该文件数据,并以InputStream返回数据。
而在android studio则是通过:JsonLearn.this.getClass().getClassLoader().getResourceAsStream("assets/" + "Text.json");返回相应InputStream.
三:案例展示:
1:案例项目app界面如下,通过按钮分别实现Json数据的读取和创建,并展示在TextView中。
2:代码如下:
package activity.cyq.datalrearn;
import android.support.v.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class JsonLearn extends AppCompatActivity {
private TextView writeText, readText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_json_learn);
readText = (TextView) findViewById(R.id.readJsonText);
writeText = (TextView) findViewById(R.id.writeJsonText);
/*读取Json数据*/
findViewById(R.id.readJsioBtn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
/*获取到assets文件下的TExt.json文件的数据,并以输出流形式返回。*/
InputStream is = JsonLearn.this.getClass().getClassLoader().getResourceAsStream("assets/" + "Text.json");
InputStreamReader streamReader = new InputStreamReader(is);
BufferedReader reader = new BufferedReader(streamReader);
String line;
StringBuilder stringBuilder = new StringBuilder();
try {
while ((line = reader.readLine()) != null) {
// stringBuilder.append(line);
stringBuilder.append(line);
}
reader.close();
reader.close();
is.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
JSONObject person = new JSONObject(stringBuilder.toString());
JSONArray infArray = person.getJSONArray("inf");
for (int i = ; i < infArray.length(); i++) {
JSONObject inf_Array = infArray.getJSONObject(i);
readText.append("name:" + inf_Array.getString("name") + "\n");
readText.append("IdCard:" + inf_Array.getString("IdCard"));
readText.append("age:" + inf_Array.getInt("age"));
readText.append("married:" + inf_Array.getBoolean("married"));
}
} catch (JSONException e) {
e.printStackTrace();
}
}
});
/*创建Json数据并显示*/
findViewById(R.id.writeJsioBtn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
JSONObject inf = new JSONObject();
inf.put("number", );
JSONArray array = new JSONArray();
JSONObject arr_ = new JSONObject();
arr_.put("name", "张三");
arr_.put("age", );
arr_.put("IdCard", "XC");
arr_.put("married", true);
JSONObject arr_ = new JSONObject();
arr_.put("name", "李四");
arr_.put("age", );
arr_.put("IdCard", "@DC");
arr_.put("married", true);
array.put(, arr_);
array.put(, arr_);
inf.put("inf", array);
writeText.setText(inf.toString());
} catch (JSONException e) {
e.printStackTrace();
}
}
});
}
}
以上是通过Android中Json数据读取与创建的方法,希望能够帮助到大家,在实际的项目开发中可以通过Gson(谷歌)Fast-Json(阿里巴巴)这两款Json处理API。


猜你喜欢
- java 回调函数例子,及其原理,与代理模式的区别回调函数应用程序(application program)会时常通过API调用库里所预先备
- 前言大家都知道在Java中,除了8种基本数据类型外,其他的都是引用类型。使用引用类型是为了更好地贯彻面向对象的思想,那为什么还要保留8种基本
- 一、Stream流引入Lambda表达式,基于Lambda所带来的函数式编程,又引入了一个全新的Stream概念,用于解决集合类库既有的鼻端
- 今天去某在线教育面试面试官让做的一道题,题目描述如下:给定一个不重复的无序数组arr和一个定值num查找arr中是否有两个数的和等于num有
- 本文实例为大家分享了Android自定义Banner轮播效果展示的具体代码,供大家参考,具体内容如下自定义View布局<Relativ
- 一、系统介绍本系统实现的以下功能管理员功能:登录系统、病人信息的增删改查、就医档案的录入、医生信息的增删改查、科室信息的增删改查、收费统计功
- 一、定义登录控制器目录结构代码:1、创建TUser类package com.demo.pojo;import lombok.AllArgsC
- 定义MD全称Message-Digest,即信息摘要,所以MD家族的算法也叫信息摘要算法MD家族有MD2、MD3、MD4、MD5,一代比一代
- 在开发Web办公系统或文档系统时,PageOffice组件是众所周知的在线处理微软word/ppt/excel文档的强大工具,它对WORD文
- Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样
- 首先我们先看一下要模拟的界面 我们主要实现的就是ListView解析json文件中的数据,UI布局很简单不做赘述。 这里我们需要一个服务器来
- 通常,我们会被要求实现类似支付宝首页的特效:随着界面的滑动,标题栏的背景透明度渐变。在实际开发中,常见的滑动有列表RecyclerView(
- 注解的介绍@ControllerAdvice@ControllerAdvice注解是Spring3.2中新增的注解,学名是Controlle
- 本文实例为大家分享了Android实现蒙板效果的相关代码,供大家参考,具体内容如下1、不保留标题栏蒙板的实现效果:原理:1、弹窗时,设置背景
- Flutter 是 Google 开源的 UI 工具包,帮助开发者通过一套代码库高效构建多平台精美应用,支持移动、Web、桌面和嵌入式平台。
- 利用学过的BitmapShader渲染类,我们来实现一个带描边的圆角图片。具体实现:用来显示自定义的绘图类的布局文件res/layout/m
- HtmlAgilityPack 是一个开源的快速解析Html的C#类库。简单理解,它可以像解析Xml一样,将Html根据XPATH转化为一个
- 一、所需要的包:1、commons-fileupload-1.2.1.jar:下载地址http://commons.apache.org/d
- 记录自己用java swing做的第一个简易界面。LoginAction.javapackage com.QQUI0819;import j
- 本文实例讲述了Java调用Shell命令的方法。分享给大家供大家参考。具体如下:近日项目中有这样一个需求:系统中的外币资金调度完成以后,要将