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. [Sass]占位符 %placeholder

    [Sass]占位符 %placeholder Sass 中的占位符 %placeholder 功能是一个很强大,很实用的一个功能,这也是我非常喜欢的功能.他可以取代以前 CSS 中的基类造成的代码冗余 ...

  2. cornerstone知识点

    CornerStone使用教程(配置SVN,HTTP及svn简单使用) 发布时间:2015-01-02 19:54   作者:芳仔小脚印    来源:开源中国 CornerStone是Mac OS X ...

  3. JavaCV配置

    下载javacv-1.2-bin.zip https://github.com/bytedeco/javacv 解压 在Eclipse项目 Referenced Libraries 中 Add Ext ...

  4. libc++abi.dylib`__cxa_throw: 视频播放时异常

    这两天研究视频播放,集成RTMP视频出现的异常,刚好看到一篇博客,楼主使用[AVAudioPlayer Play]时出现了异常...记录下来: 由于xcode中设置了当所有异常出现时的断点,,解决办法 ...

  5. 第五课 CSS3 and H5 知识点

    概要:CSS3美化样式.自定义字体图标.滤镜设置.CSS3选择器.transform2D转换.新增表单控件.vaild表单验证.表单样式美化等. 属性选择器: E[attr]只使用属性名,但没有确定任 ...

  6. phpcms v9 中的数据库操作函数

    1.查询 $this->select($where = '', $data = '*', $limit = '', $order = '', $group = '', $key='')   返回 ...

  7. 【React】dva-cli建立脚手架后发现页面样式不对的问题

    用dva-cli作为脚手架建立工程后,开始尝试编写页面.然后立马发现一个坑爹的问题. 在我less文件里面写了一个class ,比如:MainHead. 但是编译出来之后发现css文件里面变成了 Ma ...

  8. Duilib源码分析(四)绘制管理器—CPaintManagerUI—(前期准备四)

    接下来,分析uilib.h中的WinImplBase.h和UIManager.h: WinImplBase.h:窗口实现基类,已实现大部分的工作,基本上窗口类均可直接继承该类,可发现该类继承于多个类, ...

  9. Hive的三种安装方式(内嵌模式,本地模式远程模式)

    一.安装模式介绍:     Hive官网上介绍了Hive的3种安装方式,分别对应不同的应用场景.     1.内嵌模式(元数据保村在内嵌的derby种,允许一个会话链接,尝试多个会话链接时会报错)   ...

  10. ExtJS客户端代理

    代理(proxy)分为两大类:客户端代理和服务器端代理.客户端代理主要完成与浏览器本地存取数据相关的工作,服务器端代理则是通过发送请求,从服务器端获取数据.根据各自获取数据的方式,客户端代理和服务器端 ...