annuaire recherche
android Manifest Manifest.permission Manifest.permission_group android.accessibilityservice AccessibilityService android.accounts Account android.app NotificationManager android.bluetooth BluetoothAdapter BluetoothClass BluetoothClass.Device BluetoothClass.Device.Major BluetoothClass.Service BluetoothDevice BluetoothServerSocket BluetoothSocket android.content SharedPreferences android.database.sqlite SQLiteCursorDriver SQLiteOpenHelper android.graphics Bitmap android.location LocationListener Geocoder GpsStatus GpsStatus.Listener GpsStatus.NmeaListener GpsSatellite android.media AudioFormat AsyncPlayer AudioRecord AudioRecord.OnRecordPositionUpdateListener ThumbnailUtils AudioManager android.net TrafficStats MailTo LocalSocket android.os AsyncTask AsyncTask.Status CountDownTimer Message MessageQueue HandlerThread android.text Html android.util JsonWriter android.view ContextMenu ContextMenu.ContextMenuInfo Display ViewManager View ViewStub ViewTreeObserver ViewParent WindowManager GestureDetector Gravity MenuInflater ScaleGestureDetector SoundEffectConstants android.view.inputmethod InputConnection InputMethod InputMethodSession BaseInputConnection InputMethodManager android.widget AbsListView AbsListView.LayoutParams AbsListView.OnScrollListener AbsListView.RecyclerListener AbsoluteLayout AbsoluteLayout.LayoutParams AbsSeekBar AbsSpinner AdapterView AdapterView.AdapterContextMenuInfo AdapterView.OnItemLongClickListener AdapterView.OnItemSelectedListener AdapterView.OnItemClickListener AnalogClock BaseAdapter BaseExpandableListAdapter Button CheckBox CheckedTextView Checkable Chronometer Chronometer.OnChronometerTickListener CompoundButton CompoundButton.OnCheckedChangeListener CursorAdapter CursorTreeAdapter DatePicker DatePicker.OnDateChangedListener DialerFilter DigitalClock EditText Filter Filter.FilterListener Filter.FilterResults ExpandableListAdapter ExpandableListView.OnChildClickListener ExpandableListView.OnGroupClickListener ExpandableListView.OnGroupCollapseListener ExpandableListView.OnGroupExpandListener Filterable Gallery Gallery.LayoutParams GridView GridLayout GridLayout.Alignment RadioGroup ImageView ImageView.ScaleType HorizontalScrollView ImageButton ImageSwitcher FilterQueryProvider ListAdapter ListView MediaController MultiAutoCompleteTextView MultiAutoCompleteTextView.CommaTokenizer MultiAutoCompleteTextView.Tokenizer QuickContactBadge RadioButton RatingBar RatingBar.OnRatingBarChangeListener RelativeLayout RemoteViews ResourceCursorAdapter ResourceCursorTreeAdapter Scroller ScrollView SearchView SearchView.OnCloseListener SearchView.OnQueryTextListener SearchView.OnSuggestionListener SeekBar SeekBar.OnSeekBarChangeListener SimpleAdapter SimpleAdapter.ViewBinder SimpleCursorAdapter SimpleCursorAdapter.CursorToStringConverter SimpleCursorAdapter.ViewBinder SimpleCursorTreeAdapter SimpleCursorTreeAdapter.ViewBinder SimpleExpandableListAdapter SlidingDrawer SlidingDrawer.OnDrawerCloseListener SlidingDrawer.OnDrawerOpenListener SlidingDrawer.OnDrawerScrollListener Spinner SpinnerAdapter WrapperListAdapter TabHost TabHost.TabSpec TextView TimePicker TimePicker.OnTimeChangedListener Toast TableLayout TableLayout.LayoutParams TableRow TableRow.LayoutParams TabWidget TextSwitcher ToggleButton TwoLineListItem VideoView ViewAnimator ViewFlipper ViewSwitcher ViewSwitcher.ViewFactory ZoomButtonsController ZoomButtonsController.OnZoomListener ZoomButton ZoomControls dalvik.system DexFile
personnages


JsonWriter

版本: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例子

 


Article précédent: Article suivant: