JsonWriter 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
一次寫入一個 JSON(RFC 4627) 編碼值到串流中,一個權杖一個字。
[Android.Runtime.Register("android/util/JsonWriter", DoNotGenerateAcw=true)]
public sealed class JsonWriter : Java.Lang.Object, IDisposable, Java.IO.ICloseable
[<Android.Runtime.Register("android/util/JsonWriter", DoNotGenerateAcw=true)>]
type JsonWriter = class
inherit Object
interface ICloseable
interface IJavaObject
interface IDisposable
interface IJavaPeerable
- 繼承
- 屬性
- 實作
備註
一次寫入一個 JSON(RFC 4627) 編碼值到串流中,一個權杖一個字。 串流包含字面值(字串、數字、布林值與空值),以及物件與陣列的開始與結束分隔符。
<h3>編碼 JSON/<h3> 若要將資料編碼成 JSON,請建立一個新的 JsonWriter. 每個 JSON 文件必須包含一個頂層陣列或物件。 在你走過結構內容時,呼叫寫入者的方法,必要時巢狀陣列和物件:ul<li 要寫>強陣<列/強>陣列<,第一次呼叫 >。<>#beginArray() 用適當的 #value 方法寫入陣列的每個元素,或透過巢狀其他陣列和物件來寫入。 最後用 #endArray()閉合陣列。
<li 要寫>強物<>體/強<,首先呼叫 >。#beginObject() 透過交替呼叫 與 #name 屬性值來寫入物件的每個屬性。 用適當的 #value 方法或巢狀其他物件或陣列來寫入屬性值。 最後用 #endObject()關閉物件。
</ul>
<h3>範例</h3> 假設我們想編碼一串訊息,如下:
{@code
[
{
"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
}
}
]}
此編碼編碼上述結構:
{@code
public void writeJsonStream(OutputStream out, List<Message> 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<Message> 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<Double> doubles) throws IOException {
writer.beginArray();
for (Double value : doubles) {
writer.value(value);
}
writer.endArray();
}}
每個 JsonWriter JSON 都可以用來寫出單一 JSON 串流。 此類別的實例並非執行緒安全。 會導致 JSON 字串異常的呼叫,若 。IllegalStateException
Java 文件 android.util.JsonWriter。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
建構函式
| 名稱 | Description |
|---|---|
| JsonWriter(Writer) |
建立一個新實例,將 JSON 編碼的串流寫入 |
屬性
| 名稱 | Description |
|---|---|
| Class |
回傳此 |
| Handle |
底層 Android 實例的帳號。 (繼承來源 Object) |
| JniIdentityHashCode |
取得由互通執行時指派給此 Java 對等端的身份雜湊碼。 (繼承來源 Object) |
| JniManagedPeerState |
一次寫入一個 JSON(RFC 4627) 編碼值到串流中,一個權杖一個字。 (繼承來源 JavaObject) |
| JniPeerMembers |
一次寫入一個 JSON(RFC 4627) 編碼值到串流中,一個權杖一個字。 |
| Lenient |
如果作者放寬了語法規則,則回傳為真。 -或- 設定此寫入者放寬語法規則。 |
| PeerReference |
取得這個 Java 節點的 JNI 物件參考。 (繼承來源 Object) |
| ThresholdClass |
此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。 (繼承來源 Object) |
| ThresholdType |
此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。 (繼承來源 Object) |
方法
| 名稱 | Description |
|---|---|
| BeginArray() |
開始編碼一個新的陣列。 |
| BeginArrayAsync() |
一次寫入一個 JSON(RFC 4627) 編碼值到串流中,一個權杖一個字。 |
| BeginObject() |
開始編碼一個新物件。 |
| BeginObjectAsync() |
一次寫入一個 JSON(RFC 4627) 編碼值到串流中,一個權杖一個字。 |
| Clone() |
建立並回傳此物件的副本。 (繼承來源 Object) |
| Close() |
沖洗並關閉這位作者及其底層 |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
一次寫入一個 JSON(RFC 4627) 編碼值到串流中,一個權杖一個字。 (繼承來源 JavaObject) |
| Dispose() |
釋放該 Java 節點所持有的資源。 (繼承來源 Object) |
| Dispose(Boolean) |
釋放該 Java 節點所持有的資源。 (繼承來源 Object) |
| DisposeUnlessReferenced() |
一次寫入一個 JSON(RFC 4627) 編碼值到串流中,一個權杖一個字。 (繼承來源 JavaObject) |
| EndArray() |
結束時會編碼目前陣列。 |
| EndArrayAsync() |
一次寫入一個 JSON(RFC 4627) 編碼值到串流中,一個權杖一個字。 |
| EndObject() |
結束編碼目前物件。 |
| EndObjectAsync() |
一次寫入一個 JSON(RFC 4627) 編碼值到串流中,一個權杖一個字。 |
| Equals(Object) |
一次寫入一個 JSON(RFC 4627) 編碼值到串流中,一個權杖一個字。 (繼承來源 JavaObject) |
| Equals(Object) |
表示是否有其他物體「等同」於此物。 (繼承來源 Object) |
| Flush() |
確保所有緩衝資料都寫入底層 |
| FlushAsync() |
一次寫入一個 JSON(RFC 4627) 編碼值到串流中,一個權杖一個字。 |
| GetHashCode() |
回傳物件的雜湊碼值。 (繼承來源 Object) |
| JavaFinalize() |
已淘汰.
當垃圾回收判定該物件不再有相關參考時,由垃圾回收器呼叫。 (繼承來源 Object) |
| Name(String) |
編碼物業名稱。 |
| NameAsync(String) |
一次寫入一個 JSON(RFC 4627) 編碼值到串流中,一個權杖一個字。 |
| Notify() |
喚醒一個正在該物件監視器上等待的執行緒。 (繼承來源 Object) |
| NotifyAll() |
喚醒所有等待該物件監視器的執行緒。 (繼承來源 Object) |
| NullValue() |
編碼 |
| NullValueAsync() |
一次寫入一個 JSON(RFC 4627) 編碼值到串流中,一個權杖一個字。 |
| SetHandle(IntPtr, JniHandleOwnership) |
設定 Handle 屬性。 (繼承來源 Object) |
| SetIndent(String) |
設定縮排字串在編碼文件中每個縮排層級重複使用。 |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
一次寫入一個 JSON(RFC 4627) 編碼值到串流中,一個權杖一個字。 (繼承來源 JavaObject) |
| ToArray<T>() |
從這個 Java 陣列包裝器建立一個受管理陣列。 (繼承來源 Object) |
| ToString() |
回傳物件的字串表示。 (繼承來源 Object) |
| UnregisterFromRuntime() |
將此 Java 節點從互通執行時中取消註冊。 (繼承來源 Object) |
| Value(Boolean) |
編碼 |
| Value(Double) |
編碼 |
| Value(Int64) |
編碼 |
| Value(Number) |
編碼 |
| Value(String) |
編碼 |
| ValueAsync(Boolean) |
一次寫入一個 JSON(RFC 4627) 編碼值到串流中,一個權杖一個字。 |
| ValueAsync(Double) |
一次寫入一個 JSON(RFC 4627) 編碼值到串流中,一個權杖一個字。 |
| ValueAsync(Int64) |
一次寫入一個 JSON(RFC 4627) 編碼值到串流中,一個權杖一個字。 |
| ValueAsync(Number) |
一次寫入一個 JSON(RFC 4627) 編碼值到串流中,一個權杖一個字。 |
| ValueAsync(String) |
一次寫入一個 JSON(RFC 4627) 編碼值到串流中,一個權杖一個字。 |
| Wait() |
導致目前執行緒等待被喚醒,通常是透過 <em>通知</><em 或 em>中斷</em> 來喚醒。 (繼承來源 Object) |
| Wait(Int64, Int32) |
會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。 (繼承來源 Object) |
| Wait(Int64) |
會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。 (繼承來源 Object) |
明確介面實作
| 名稱 | Description |
|---|---|
| IJavaPeerable.Disposed() |
一次寫入一個 JSON(RFC 4627) 編碼值到串流中,一個權杖一個字。 (繼承來源 JavaObject) |
| IJavaPeerable.Finalized() |
一次寫入一個 JSON(RFC 4627) 編碼值到串流中,一個權杖一個字。 (繼承來源 JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
一次寫入一個 JSON(RFC 4627) 編碼值到串流中,一個權杖一個字。 (繼承來源 JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
一次寫入一個 JSON(RFC 4627) 編碼值到串流中,一個權杖一個字。 (繼承來源 JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
一次寫入一個 JSON(RFC 4627) 編碼值到串流中,一個權杖一個字。 (繼承來源 JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
一次寫入一個 JSON(RFC 4627) 編碼值到串流中,一個權杖一個字。 (繼承來源 JavaObject) |
| IJavaPeerable.UnregisterFromRuntime() |
一次寫入一個 JSON(RFC 4627) 編碼值到串流中,一個權杖一個字。 |
擴充方法
| 名稱 | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
取得實例 |
| JavaAs<TResult>(IJavaPeerable) |
試著強制 |
| JavaCast<TResult>(IJavaObject) |
執行 Android 執行時檢查型別轉換。 |
| JavaCast<TResult>(IJavaObject) |
一次寫入一個 JSON(RFC 4627) 編碼值到串流中,一個權杖一個字。 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
試著強制 |