关闭

Android读写JSON格式的数据之JsonWriter和JsonReader

标签: androidjson移动设备
154人阅读 评论(0) 收藏 举报

原文链接

最近的好几个月都没有搞Android编程了,逐渐的都忘却了一些东西。最近打算找一份Android的工作,要继续拾起以前的东西。公司月初搬家之后就一直没有网络,直到今日公司才有网络接入,各部门才开始办公。不说这些了,下面开始今天的正文。

JSON格式的数据通常用于网络传输,尤其是在移动设备上与服务端进行数据交互。JSON与XML比较有明显的优势。XML格式的数据非常臃肿,传递少量的数据就要附带很多额外的格式数据。而JSON除了少量的符号外,全部是真正的数据,所以有越来越多的程序用JSON来取代XML。JSON格式的数据不仅被广泛应用于网络传输,也经常用于本地存储。

JSON格式的数据可以存储数组和对象。数组用一对中括号([……])表示,对象用一对大括号({……})表示。数组和对象可以嵌套,例如,下面是一个用JSON表示的对象数组:
[{id:1,name:”Android将军”},{id:2,name:”Android将军”}]

Android SDK用于读写JSON格式数据的类是JsonReader和JsonWriter。这两个类可以处理数组和对象,处理数组的代码必须放在beginArray和endArray方法之间,处理对象的代码必须放在beginObject和endObject之间。

这里给出一个读写JSON文件案例,主Activity代码如下:

package com.gc.androidjsonpractice;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import android.os.Bundle;
import android.os.Environment;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.graphics.Paint.Join;

import android.util.JsonReader;
import android.util.JsonWriter;
import android.widget.Toast;

/**
 * 功能:复习与练习Json的使用一
 * 
 * @author Android将军
 * 
 */
@SuppressLint("NewApi")
public class MainActivity extends Activity {

    private String filePath;
    private FileOutputStream fileOutputStream;
    private FileInputStream fileInputStream;

    @SuppressLint({ "NewApi", "SdCardPath" })
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //json文件存放路径
        filePath = Environment.getExternalStorageDirectory().toString()
                + "/test.json";
        System.out.println("filePath:" + filePath);//查看实际路径

        try {

            fileOutputStream = new FileOutputStream(filePath);

            @SuppressWarnings("resource")
            //开始写JSON数据
            JsonWriter jsonWriter = new JsonWriter(new OutputStreamWriter(
                    fileOutputStream, "UTF-8"));

            jsonWriter.beginObject();

            jsonWriter.name("id").value("1");

            jsonWriter.name("name").value("Android将军");

            jsonWriter.endObject();

            System.out.println("JSON数据写入完毕!");

            jsonWriter.close();
            // 开始读JSON数据
            System.out.println("开始读取JSON数据");

            fileInputStream = new FileInputStream(filePath);

            @SuppressWarnings("resource")
            JsonReader jsonReader = new JsonReader(new InputStreamReader(
                    fileInputStream, "UTF-8"));

            jsonReader.beginObject();

            System.out.println("哈哈:"+jsonReader.toString());
            while (jsonReader.hasNext()) {

                if (jsonReader.nextName().equals("id")) {
                    System.out.println("id:" + jsonReader.nextString());

                }
                if (jsonReader.nextName().equals("name")) {
                    System.out.println("name:" + jsonReader.nextString());
                }
            }

            jsonReader.endObject();
            jsonReader.close();

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

}


 

程序运行结果如下:

格式,json,android,jsonwriter,数据0

0
0
查看评论

Android读写JSON格式的数据之JsonWriter和JsonReader

最近的好几个月都没有搞Android编程了,逐渐的都忘却了一些东西。最近打算找一份Android的工作,要继续拾起以前的东西。公司月初搬家之后就一直没有网络,直到今日公司才有网络接入,各部门才开始办公。不说这些了,下面开始今天的正文。 JSON格式的数据通常用于网络传输,尤其是在移动设备上与服务端进...
  • gc_gongchao
  • gc_gongchao
  • 2014-08-21 15:15
  • 4838

【第12篇】通过GSON的WriterReader与JsonReader去处理json数据

通过GSON的WriterReader与JsonReader去处理json数据
  • jilongliang
  • jilongliang
  • 2015-01-18 21:16
  • 1069

JsonReader解析json和JsonWriter生成json

最近学习了googleAPI中自带的一个解析和生成json的API jsonReader: 需要解析的json如下: {      "id": 912345678901,      "text&quo...
  • mockingbirds
  • mockingbirds
  • 2014-12-29 21:39
  • 4072

FastJson 使用详解

转载请标明出处:http://blog.csdn.net/xx326664162/article/details/50315927 文章出自:薛瑄的博客 你也可以查看我的其他同类文章,也会让你有一定的收货! 介绍 JSON fastJson 下载地址: 作者的git:http://gi...
  • xx326664162
  • xx326664162
  • 2015-12-15 15:54
  • 1810

你不知道的JSON的高效率用法

1.JSON JSON是JavaScript Object Notation的缩写,是JavaScript标准的一个子集。官方Android API已经内置支持读写JSON数据。这种格式非常适合表示不包含二进制数据的复杂对象。从某种程度上说,它也成了网络上共享数据的事实标准。 下面的例子显示了一个简...
  • liyuanjinglyj
  • liyuanjinglyj
  • 2015-05-21 14:04
  • 7453

Android JSON 解析(二) JSONReader 和 JSONWriter

在 Android 3.0 API 11 的更新中,android.util 包下增加了 JSONReader 和 JSONWriter 等新的 json 解析类库,官方文档上已经将用法讲的差不多了,本文算是对官方文档的一个精简整理。 JSONReader JSONReader 从名字就可以...
  • a06_kassadin
  • a06_kassadin
  • 2014-11-30 21:42
  • 1720

android学习二十三(解析json格式数据)

前面我们已经掌握了xml格式数据的解析方式,那么接下来我们学习下如何解析json格式的数据。比起xml,json的主要优势在于它体积更小,在网络上传输的时候可以更省流量。但缺点在于,它的语义性差,看起来不如xml直观。     开始之前,先在自己的电脑apache-to...
  • wj903829182
  • wj903829182
  • 2015-01-08 10:41
  • 1237

OKGO使用,编写JSONCALLBACK

在使用okGo库时,需要自己编写一个JsonCallBack,这个简单记录一下。 public abstract class JsonCallback extends AbsCallback { private Type type; private Class clazz; ...
  • qq_26030147
  • qq_26030147
  • 2017-12-13 11:58
  • 191

【第14篇】通过GSON的JsonReader去读取数据处理json数据

通过GSON的JsonReader去读取数据处理json数据
  • jilongliang
  • jilongliang
  • 2015-01-19 09:36
  • 4645

jqGrid简单使用、json格式和jsonReader介绍

广大的读者朋友们大家好,很高兴又可以在博客中和大家分享我的开发经验了。 此次,我准备向大家介绍一个非常好用的jQuery表格插件——jqGrid。 如果您在实际项目中遇到web端表格展示功能的需求,又不知道到底该使用那种技术实现时,jqGrid绝对是您的不二之选。 如果您已经决定使...
  • AinUser
  • AinUser
  • 2017-03-30 08:41
  • 5532
    个人资料
    • 访问:847次
    • 积分:18
    • 等级:
    • 排名:千里之外
    • 原创:0篇
    • 转载:7篇
    • 译文:0篇
    • 评论:0条
    文章存档