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. shell 多行注释

    :<<! 要注释的内容 要注释的内容 要注释的内容 !

  2. oracle中trunc()和to_char()函数用法

    -----trunc(for date) select sysdate from dual; --当前时间  2016/9/7 10:32:04select trunc(sysdate) from d ...

  3. 11. KVC And KVO

    1. KVC And KVO  的认识 KVC/KVO是观察者模式的一种实现  KVC全称是Key-value coding,翻译成键值编码.顾名思义,在某种程度上跟map的关系匪浅.它提供了一种使用 ...

  4. 忘记Windows7登陆密码解决办法

    忘记 Windows7 的登陆密码,解决这个问题的思路就是替换 system32 下的 Magnify.exe . 可以从 WindowsPE 启动,到 C:\windows\system32 下. ...

  5. Lintcode 469. 等价二叉树

    ----------------------------------------------- AC代码: /** * Definition of TreeNode: * public class T ...

  6. 3.2 配置构建Angular应用——简单的笔记存储应用

    本节我们会通过构建一个简单的笔记存储应用(可以载入并修改一组简单的笔记)来学习如何应用Angular的特性.这个应用用到的特性有: 在JSON文件中存储笔记 展示.创建.修改和删除笔记 在笔记中使用M ...

  7. [MVC4]初识.NET MVC4

    最近一个月都在专心做unity3d的斗地主游戏,从早到晚,最后总算是搞出来了,其中的心酸只有自己知道.最近才有功夫闲下来,还是学习学习之前的老本行——asp.net,现在用.net做项目流行MVC,而 ...

  8. 如何快速找到排好序的数组中最先不连续的数字N

    现在有一大堆自然数组成的小到大数组arr,其中会有123456910  这样就要找到6(最先不连续的数字) 举例:[12356789] 找到3 [012345678] 找到8 第一种:遍历数组判断是否 ...

  9. Java 之 常用类(二)

    1.StringBuffer a.StringBuffer 与 String:①StringBuffer是一个全新的类型,与String没有继承关系 ②StringBuffer的出现是为了解决Stri ...

  10. 闲聊——浅谈前端js模块化演变

    function时代 前端这几年发展太快了,我学习的速度都跟不上演变的速度了(门派太多了,后台都是大牛公司支撑类似于facebook的react.google的angular,angular的1.0还 ...