JsonWriter 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
将 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
- 继承
- 属性
- 实现
注解
将 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.JsonWriter
Java 文档。
此页面的某些部分是基于 创建和共享的工作进行的修改,并根据 署名许可中所述的条款使用。
构造函数
JsonWriter(Writer) |
创建一个新实例,该实例将 JSON 编码的流写入 到 |
属性
Class |
返回此 |
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() |
刷新并关闭此编写器和基础 |
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() |
确保所有缓冲数据都写入基础 |
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) |
设置要针对编码文档中每个缩进级别的缩进字符串重复。 |
ToArray<T>() |
将 JSON (RFC 4627) 编码值写入流,一次一个令牌。 (继承自 Object) |
ToString() |
返回对象的字符串表示形式。 (继承自 Object) |
UnregisterFromRuntime() |
将 JSON (RFC 4627) 编码值写入流,一次一个令牌。 (继承自 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>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) 编码值写入流,一次一个令牌。 |