zoukankan      html  css  js  c++  java
  • Android中文API(144) —— JsonWriter

    前言

      本章内容android.util.JsonWriter章节,版本为Android 4.0 r1,翻译来自:"yddido",欢迎访问他的博客:"http://blog.csdn.net/yddido",再次感谢他 !期待你一起参与翻译Android的相关资料,联系我over140@gmail.com。

    声明

      欢迎转载,但请保留文章原始出处:) 

        博客园:http://www.cnblogs.com/

        Android中文翻译组:http://androidbox.sinaapp.com/

     

    JsonWriter

    译者署名:yddido

    译者链接:http://blog.csdn.net/yddido

    版本:Android 4.0 r1

     

    结构

    继承关系

    public final class JSonWriter extends Object implements Closeable 

            

    java.lang.Object

    android.util.JsonWriter

                      

    类概述

    输出JSONRFC4627)的流编码值,每次一个token。这个流值包括文字内容(字符串,数字布尔值,nulls)以及对象和数组的开始和结束符。

     

    JSON编码

             将数据编码为JSON格式,创建一个JsonWriter对象。每个JSON文件必须包含一个顶层的数组或者对象。嵌套数组和对象必须如下调用方法来组织内容:

    l   数组,首先要调用beginArray()用适当的value()方法或嵌套其他数组和对象为每个元素赋值。最后关闭数组调用endArray()

    l   对象,首先调用beginObject()通过交替调用name(String)方法循环写入对象属性值。用适当的value()方法或嵌套其他数组和对象写入熟悉值。最后关闭对象调用endObject() 

     

    例子

    编写流信息如下:

     [

       {

         "id": 912345678901,

         "text": "How do I write JSON on Android?",

         "geo": null,

         "user": {

           "name": "android_newb",

           "followers_count": 41

         

       },

       {

         "id": 912345678902,

         "text": "@android_newb just use android.util.JsonWriter!",

         "geo": [50.454722, -104.606667],

         "user": {

           "name": "jesse",

           "followers_count": 2

         }

       }

     ]}

    如下表示以上信息结构:

       public void writeJsonStream(OutputStream out, List messages) throws IOException {
         
    JsonWriter writer = new JsonWriter(new OutputStreamWriter(out, "UTF-8"));
         writer
    .setIndent("  ");
         writeMessagesArray
    (writer, messages);
         writer
    .close();
       

       
    public void writeMessagesArray(JsonWriter writer, List messages) throws IOException {
         writer
    .beginArray();
         
    for (Message message : messages) {
           writeMessage
    (writer, message);
         
    }
         writer
    .endArray();
       
    }

       
    public void writeMessage(JsonWriter writer, Message message) throws IOException {
         writer
    .beginObject();
         writer
    .name("id").value(message.getId());
         writer
    .name("text").value(message.getText());
         
    if (message.getGeo() != null) {
           writer
    .name("geo");
           writeDoublesArray
    (writer, message.getGeo());
         
    } else {
           writer
    .name("geo").nullValue();
         
    }
         writer
    .name("user");
         writeUser
    (writer, message.getUser());
         writer
    .endObject();
       
    }

       
    public void writeUser(JsonWriter writer, User user) throws IOException {
         writer
    .beginObject();
         writer
    .name("name").value(user.getName());
         writer
    .name("followers_count").value(user.getFollowersCount());
         writer
    .endObject();
       
    }

       
    public void writeDoublesArray(JsonWriter writer, List doubles) throws IOException {
         writer
    .beginArray();
         
    for (Double value : doubles) {
           writer
    .value(value);
         
    }
         writer
    .endArray();
       
    }}

    JsonWriter可用于来写一个JSON流。这个类的实例不是线程安全的。调用JsonWriter产生一个不规则JSON字符串会抛出异常IllegalStateException

     

    构造方法

        public JsonWriter (Writer out)

             创建一个新的JSON编码流的实例。为了获得最佳性能,需要确保Write缓冲,必要时强制转换为BufferedWriter

     

    公共方法

    public JsonWriter beginArray()

    开始一个新的数组编码。每次调用这个方法必须调用一个endArray()进行配对。

             返回值

                       JsonWriter对象。

             异常

                       IOException

     

    public JsonWriter beginObject()

    开始一个新的对象编码。每次调用这个方法必须调用一个endObject ()进行配对。

             返回值

                       JsonWriter对象。

             异常

                       IOException

     

    public void close()

    刷新和关闭实例对象和底层Writer

             异常

                       IOException     如果JSON文件不完整抛出此异常。

     

    public JsonWriter endArray()

            结束当前编码数组

             返回值

                       JsonWriter对象。

             异常

                       IOException

     

    public JsonWriter endObject()

    结束当前编码对象

             返回值

                       JsonWriter对象。

             异常

                       IOException

     

    public void flush()

    确保所有缓存数据写入底层Writer并刷新(flush)这个实例对象。

     

    public boolean isLenient()

    如果writer对象是不严格的语法规则返回true

     

    public JsonWriter name(String name)

    编码属性名

             参数

                       name        将被赋值对象的名字,不允许使用空值。

             返回值

                       JsonWriter对象。

             异常

                       IOException

     

    public JsonWriter nullValue()

    编码空值。

             返回值

                       对象本身。

             异常

                       IOException

     

    public void setIndent(String indent)

    为编码文档每一级设置缩进字符串。如果indent.isEmpty()返回true编码文档将被压缩,否则编码文档将更加易读。

             参数

                       indent       一个仅包含空格的字符串。

     

    public void setLenient(boolean lenient)

    配置writer对象使其使用不严格的语法规则。默认情况下,此writer对象只能发送符合RFC 4627语法规则的JSON。设置允许writer不严格规则如下:

    l   最顶层的值可以是任何类型。严格来说,最顶层的值必须是一个对象或者数组。

    l   数字可以是非数值类型或无限大。

     

    public JsonWriter value(double value)

    编码属性值

    参数

             Value       一个限定的值。不能是非数值或无限大的数(NaNs),除非writer对象是不严格的。

    返回值

             Writer对象

    异常

             IOException

            

    public JsonWriter value(long value)

    编码属性值

    返回值

             Writer对象

    异常

             IOException

     

    public JsonWriter value(Number value)

    编码属性值

    参数

             Value       一个限定的值。不能是非数值或无限大的数(NaNs),除非writer对象是不严格的。

    返回值

             Writer对象

    异常

             IOException

     

    public JsonWriter value(boolean value)

    编码属性值

    返回值

             Writer对象

    异常

             IOException

     

    public JsonWriter value(String value)

    编码属性值

    参数

             Value       一个字符串值,或者空值来编码空字符

    返回值

             Writer对象

    异常

             IOException

     

    补充

             文章精选

                       Android JSON写入类 - JsonWriter

                       JDOM创建XML例子

  • 相关阅读:
    c# 发送邮件笔记(一)
    windows API(一)
    SubSonic3.0安装
    Node.js安装MongoDB驱动
    JDBC连接数据库方法
    Delphi LiveBindings如何绑定一个对象(二)(转)
    delphi RTTI机制学习(一)
    Delphi LiveBinds组件
    mysql 每个分类各取5条
    mysql in(...) 1次取出当前记录及上1条下1条记录, 且使用了主键作为索引
  • 原文地址:https://www.cnblogs.com/over140/p/2295531.html
Copyright © 2011-2022 走看看