JsonWriter 类

定义

将 JSON (RFC 4627) 编码值写入流,一次一个令牌。

[Android.Runtime.Register("android/util/JsonWriter", DoNotGenerateAcw=true)]
public sealed class JsonWriter : Java.Lang.Object, IDisposable, Java.Interop.IJavaPeerable, Java.IO.ICloseable
[<Android.Runtime.Register("android/util/JsonWriter", DoNotGenerateAcw=true)>]
type JsonWriter = class
    inherit Object
    interface ICloseable
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
继承
JsonWriter
属性
实现

注解

将 JSON (RFC 4627) 编码值写入流,一次一个令牌。 该流包括文本值 (字符串、数字、布尔值和 null) 以及对象和数组的开始和结束分隔符。

<h3>编码 JSON</h3> 若要将数据编码为 JSON,请创建新的 JsonWriter。 每个 JSON 文档必须包含一个顶级数组或对象。 在遍历结构内容时对编写器调用方法,根据需要嵌套数组和对象: <ul><li>若要编写 <强>数组</strong>,请先调用 #beginArray()。 使用适当的 #value 方法或通过嵌套其他数组和对象来编写数组的每个元素。 最后,使用 #endArray()关闭数组。 <li>若要编写 <strong>objects</strong>,请首先调用 #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 字符串格式不正确的调用将失败,并出现 IllegalStateException

android.util.JsonWriterJava 文档。

此页面的某些部分是基于 创建和共享的工作进行的修改,并根据 署名许可中所述的条款使用。

构造函数

JsonWriter(Writer)

创建一个新实例,该实例将 JSON 编码的流写入 到 out

属性

Class

返回此 Object的运行时类。

(继承自 Object)
Handle

基础 Android 实例的句柄。

(继承自 Object)
JniIdentityHashCode

将 JSON (RFC 4627) 编码值写入流,一次一个令牌。

(继承自 Object)
JniPeerMembers

将 JSON (RFC 4627) 编码值写入流,一次一个令牌。

Lenient

如果此编写器具有宽松的语法规则,则返回 true。 - 或 - 配置此编写器以放宽其语法规则。

PeerReference

将 JSON (RFC 4627) 编码值写入流,一次一个令牌。

(继承自 Object)
ThresholdClass

此 API 支持 Mono for Android 基础结构,不应直接从代码中使用。

(继承自 Object)
ThresholdType

此 API 支持 Mono for Android 基础结构,不应直接从代码中使用。

(继承自 Object)

方法

BeginArray()

开始对新数组进行编码。

BeginArrayAsync()

将 JSON (RFC 4627) 编码值写入流,一次一个令牌。

BeginObject()

开始对新对象进行编码。

BeginObjectAsync()

将 JSON (RFC 4627) 编码值写入流,一次一个令牌。

Clone()

创建并返回此对象的副本。

(继承自 Object)
Close()

刷新并关闭此编写器和基础 Writer

Dispose()

将 JSON (RFC 4627) 编码值写入流,一次一个令牌。

(继承自 Object)
Dispose(Boolean)

将 JSON (RFC 4627) 编码值写入流,一次一个令牌。

(继承自 Object)
EndArray()

结束对当前数组的编码。

EndArrayAsync()

将 JSON (RFC 4627) 编码值写入流,一次一个令牌。

EndObject()

结束对当前对象的编码。

EndObjectAsync()

将 JSON (RFC 4627) 编码值写入流,一次一个令牌。

Equals(Object)

指示某个其他对象是否“等于”此对象。

(继承自 Object)
Flush()

确保所有缓冲数据都写入基础 Writer 并刷新该编写器。

FlushAsync()

将 JSON (RFC 4627) 编码值写入流,一次一个令牌。

GetHashCode()

返回对象的哈希代码值。

(继承自 Object)
JavaFinalize()

当垃圾回收确定不再引用对象时,由垃圾回收器对对象调用。

(继承自 Object)
Name(String)

对属性名称进行编码。

NameAsync(String)

将 JSON (RFC 4627) 编码值写入流,一次一个令牌。

Notify()

唤醒正在等待此对象的监视器的单个线程。

(继承自 Object)
NotifyAll()

唤醒正在等待此对象的监视器的所有线程。

(继承自 Object)
NullValue()

对 进行 null编码。

NullValueAsync()

将 JSON (RFC 4627) 编码值写入流,一次一个令牌。

SetHandle(IntPtr, JniHandleOwnership)

设置 Handle 属性。

(继承自 Object)
SetIndent(String)

设置要针对编码文档中每个缩进级别的缩进字符串重复。

ToArray<T>()

将 JSON (RFC 4627) 编码值写入流,一次一个令牌。

(继承自 Object)
ToString()

返回对象的字符串表示形式。

(继承自 Object)
UnregisterFromRuntime()

将 JSON (RFC 4627) 编码值写入流,一次一个令牌。

(继承自 Object)
Value(Boolean)

对 进行 value编码。

Value(Double)

对 进行 value编码。

Value(Int64)

对 进行 value编码。

Value(Number)

对 进行 value编码。

Value(String)

对 进行 value编码。

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>interrupted</em>。<>

(继承自 Object)
Wait(Int64)

导致当前线程等待,直到它被唤醒,通常是通过 em <通知/em> 或 <em>interrupted</em>,或直到经过一定数量的实时。<>

(继承自 Object)
Wait(Int64, Int32)

导致当前线程等待,直到它被唤醒,通常是通过 em <通知/em> 或 <em>interrupted</em>,或直到经过一定数量的实时。<>

(继承自 Object)

显式接口实现

IJavaPeerable.Disposed()

将 JSON (RFC 4627) 编码值写入流,一次一个令牌。

(继承自 Object)
IJavaPeerable.DisposeUnlessReferenced()

将 JSON (RFC 4627) 编码值写入流,一次一个令牌。

(继承自 Object)
IJavaPeerable.Finalized()

将 JSON (RFC 4627) 编码值写入流,一次一个令牌。

(继承自 Object)
IJavaPeerable.JniManagedPeerState

将 JSON (RFC 4627) 编码值写入流,一次一个令牌。

(继承自 Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

将 JSON (RFC 4627) 编码值写入流,一次一个令牌。

(继承自 Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

将 JSON (RFC 4627) 编码值写入流,一次一个令牌。

(继承自 Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

将 JSON (RFC 4627) 编码值写入流,一次一个令牌。

(继承自 Object)

扩展方法

JavaCast<TResult>(IJavaObject)

执行 Android 运行时检查的类型转换。

JavaCast<TResult>(IJavaObject)

将 JSON (RFC 4627) 编码值写入流,一次一个令牌。

GetJniTypeName(IJavaPeerable)

将 JSON (RFC 4627) 编码值写入流,一次一个令牌。

适用于