zoukankan      html  css  js  c++  java
  • Android读写JSON格式的数据之JsonWriter和JsonReader

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

    JSON格式的数据通经常使用于网络传输。尤其是在移动设备上与服务端进行数据交互。

    JSONXML比較有明显的优势。XML格式的数据非常臃肿,传递少量的数据就要附带非常多额外的格式数据。而JSON除了少量的符号外。所有是真正的数据。所以有越来越多的程序用JSON来代替XMLJSON格式的数据不仅被广泛应用于网络传输,也经经常使用于本地存储。

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

    Android SDK用于读写JSON格式数据的类是JsonReaderJsonWriter。这两个类能够处理数组和对象,处理数组的代码必须放在beginArrayendArray方法之间,处理对象的代码必须放在beginObjectendObject之间。

    这里给出一个读写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();
    		}
    
    	}
    
    }
    


     

    程序执行结果例如以下:

    转载请注明出处:http://blog.csdn.net/android_jiangjun/article/details/38730207

  • 相关阅读:
    编程题目分类
    sicily 1010 Zipper DP
    Sicily 2501. 算算式
    続・いいかげんにして! 日本企業─理不尽な態度
    いいかげんにして! 日本企業─中国に嫌われる理由
    中国オフショア開発の失敗を減らす組織的対策とは?
    中国オフショア開発の成功と失敗の実態
    そんな指示じゃできません!中国企業の叫び
    【Postgres】dump数据库备份与还原
    PMP考试相关
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/5205044.html
Copyright © 2011-2022 走看看