json数据包含json对象,json数组,对象是{ },数组是[ ], 数组里面还可以包含json对象,json对象之间是用逗号(,)隔开

形式如下:
{
"languages":[
{"id":,"ide":"VS","name":"C#"},
{"id":,"ide":"eclipse","name":"java"},
{"id":,"ide":"XCode","name":"Swift"}
],
"category":"it"
}

android studio下面新建assets(资产)文件夹,是放在main下面,和java,res同一目录下

在assets下新建test.json文件,把上面json数据放里面

下面是读取json文件输出到控制台显示:

  protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); findViewById(R.id.bt_showJson).setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.bt_showJson:
ReadJson();
break;
}
} private void ReadJson() {
try {
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);
}
//json根对象
JSONObject root = new JSONObject(builder.toString());
System.out.println("category:" + root.getString("category")); //得到json数组
JSONArray array = root.getJSONArray("languages");
for (int i = ; i < array.length(); i++) {
//得到每一行的json对象
JSONObject lan = array.getJSONObject(i);
System.out.println("----------------");
System.out.println("id:" + lan.getInt("id"));
System.out.println("name:" + lan.getString("name"));
System.out.println("ide:" + lan.getString("ide"));
}
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
}

二:写入json数据,输出到控制台,新建一个WirteJson方法,然后点击按钮直接调用WirteJson函数

 private void WirteJson() {
try {
//新建一个json根对象
JSONObject root = new JSONObject();
root.put("category", "it");
/* {"id":1,"ide":"VS","name":"C#"},
{"id":2,"ide":"eclipse","name":"java"},
{"id":3,"ide":"XCode","name":"Swift"}*/
//新建数组里面的json对象,新建3个对象,每个对象放入键值对
JSONObject lan1 = new JSONObject();
lan1.put("id", );
lan1.put("ide", "vs");
lan1.put("name", "C#"); JSONObject lan2 = new JSONObject();
lan2.put("id", );
lan2.put("ide", "eclipse");
lan2.put("name", "C#"); JSONObject lan3 = new JSONObject();
lan3.put("id", );
lan3.put("ide", "Xcode");
lan3.put("name", "Swift"); //新建一个json数组
JSONArray array = new JSONArray();
array.put(lan1);
array.put(lan2);
array.put(lan3); //json数组放入json的root根对象里面
root.put("languages", array);
System.out.println("------------下面是写入的json数据");
System.out.println(root.toString());
System.out.println("------------得到json数组对象");
System.out.println(root.getJSONArray("languages"));
} catch (JSONException e) {
e.printStackTrace();
}
}

控制台的显示的数据是:

Android之Json的学习的更多相关文章

  1. Android读取JSON格式数据

    Android读取JSON格式数据 1. 何为JSON? JSON,全称为JavaScript Object Notation,意为JavaScript对象表示法. JSON 是轻量级的文本数据交换格 ...

  2. Android 开源项目及其学习

    Android 系统研究:http://blog.csdn.net/luoshengyang/article/details/8923485 Android 腾讯技术人员博客 http://hukai ...

  3. android解析json

    android2.3提供的json解析类 android的json解析部分都在包org.json下,主要有以下几个类: JSONObject:可以看作是一个json对象 JSONStringer:js ...

  4. Android自动化测试之Monkeyrunner学习笔记(一)

    Android自动化测试之Monkeyrunner学习笔记(一) 因项目需要,开始研究Android自动化测试方法,对其中的一些工具.方法和框架做了一些简单的整理,其中包括Monkey.Monkeyr ...

  5. android基础---->JSON数据的解析

    上篇博客,我们谈到了XML两种常用的解析技术,详细可以参见我的博客(android基础---->XMl数据的解析).网络传输另外一种数据格式JSON就是我们今天要讲的,它是比XML体积更小的数据 ...

  6. JSON 教程学习进度备忘

    书签:跳过:另外跳过的内容有待跟进 __________________ 学习资源:W3School. _________________ 跳过的内容: 1. ______________ 知识点:1 ...

  7. Json.Net学习笔记

    http://www.cnblogs.com/xiaojinhe2/archive/2011/10/28/2227789.html Newtonsoft.Json(Json.Net)学习笔记 http ...

  8. Android(java)学习笔记267:Android线程池形态

    1. 线程池简介  多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力.     假设一个服务器完成一项任务所需时间为:T1 创建线程时间, ...

  9. Android(java)学习笔记207:开源项目使用之gif view

    1. 由于android没有自带的gif动画,我在Android(java)学习笔记198:Android下的帧动画(Drawable Animation) 播客中提到可以使用AnimationVie ...

随机推荐

  1. STM32F412应用开发笔记之六:使用片上Flash存储参数

    我们的项目中需要保存一些系统配置参数,这些数据的特点是:数量少而且不需要经常修改,但又不能定义为常量,因为每台设备可能不一样而且在以后还有修改的可能.这就需要考虑这些参数保存的问题.将这类数据存在指定 ...

  2. 安装两个tomcat

    编辑环境变量:vi /etc/profile 加入以下代码(tomcat路径要配置自己实际的tomcat安装目录) ##########first tomcat########### CATALINA ...

  3. JS获取浏览器窗口大小 获取屏幕,浏览器,网页高度宽度

    网页可见区域宽:document.body.clientWidth 网页可见区域高:document.body.clientHeight 网页可见区域宽:document.body.offsetWid ...

  4. quertz 使用小例

    最近工作中用了个任务调度,学的不好,就把它记下来,为了以后参考 一般的 quartz都允许有一个名为quartz.properties的配置文件,通过它可以修改quartz框架运行时的环境: Quar ...

  5. ubuntu svn

    http://blog.csdn.net/neutrojan/article/details/37659747

  6. plsql查找不到带中文的纪录

    今天在另外的电脑用plsql查询不到带中文的记录 select * from test where name like '%测试%' 然后发现是系统的环境变量还没设置好所造成的.在系统变量加入如下变量 ...

  7. 【Java并发系列02】Object的wait()、notify()、notifyAll()方法使用

    一.前言 对于并发编程而言,除了Thread以外,对Object对象的wati和notify对象也应该深入了解其用法,虽然知识点不多. 二.线程安全基本知识 首先应该记住以下基本点,先背下来也无妨: ...

  8. PyQt5+Python3.5.2-32bit开发环境搭建

      1.基本环境. Window 8.1 64bit Python3.5.2-32bit.exe PyQt5 2.安装python. 去官网下载32位版本的python3.5.2(就是x86那个) 备 ...

  9. mac中显示隐藏文件

    显示隐藏文件 defaults write com.apple.finder AppleShowAllFiles -bool ture 重新隐藏 defaults write com.apple.fi ...

  10. 【Hibernate框架】关联映射(多对多关联映射)

    按着我们的总结行进计划,接下来,就是有关于多对多映射的总结了. 我们来举个例子啊,很长时间以来,房价暴涨不落,但是还有很多人拥有很多套房产,假如说,一个富豪拥有九套房产,家里人么准去住哪一套,我们就以 ...