JsonReader Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Membaca nilai yang dikodekan JSON (RFC 4627) sebagai aliran token.
[Android.Runtime.Register("android/util/JsonReader", DoNotGenerateAcw=true)]
public sealed class JsonReader : Java.Lang.Object, IDisposable, Java.IO.ICloseable
[<Android.Runtime.Register("android/util/JsonReader", DoNotGenerateAcw=true)>]
type JsonReader = class
inherit Object
interface ICloseable
interface IJavaObject
interface IDisposable
interface IJavaPeerable
- Warisan
- Atribut
- Penerapan
Keterangan
Membaca nilai yang dikodekan JSON (RFC 4627) sebagai aliran token. Aliran ini mencakup nilai harfiah (string, angka, boolean, dan null) serta pemisah awal dan akhir objek dan array. Token dilalui dalam urutan kedalaman pertama, urutan yang sama dengan yang muncul di dokumen JSON. Dalam objek JSON, pasangan nama/nilai diwakili oleh satu token.
<h3>Mengurai JSON</h3> Untuk membuat pengurai turun rekursif untuk aliran JSON Anda sendiri, pertama-tama buat metode titik masuk yang membuat JsonReader.
Selanjutnya, buat metode handler untuk setiap struktur dalam teks JSON Anda. Anda akan memerlukan metode untuk setiap jenis objek dan untuk setiap jenis array.
<ul>li Dalam penanganan array yang kuat</metode yang kuat>, panggilan < pertama untuk menggunakan kurung buka array.><>#beginArray Kemudian buat perulangan sementara yang mengakumulasi nilai, mengakhiri saat #hasNext salah. Terakhir, baca kurung siku penutup array dengan memanggil #endArray.
<li>Dalam <penanganan> objek yang kuat</metode yang kuat>, panggilan #beginObject pertama untuk mengonsumsi kurung kurawal pembuka objek. Kemudian buat perulangan sementara yang menetapkan nilai ke variabel lokal berdasarkan namanya. Perulangan ini harus berakhir ketika #hasNext salah. Terakhir, baca kurung kurawal penutup objek dengan memanggil #endObject.
</ul>
Saat objek atau array berlapis ditemui, delegasikan ke metode handler yang sesuai.
Ketika nama yang tidak diketahui ditemui, pengurai ketat harus gagal dengan pengecualian. Pengurai lenient harus memanggil #skipValue() untuk secara rekursif melewati token berlapis nilai, yang mungkin bertentangan.
Jika nilai mungkin null, Anda harus terlebih dahulu memeriksa menggunakan #peek(). Literal null dapat dikonsumsi menggunakan #nextNull() atau #skipValue().
<h3>Contoh</h3> Misalkan kita ingin mengurai aliran pesan seperti berikut:
{@code
[
{
"id": 912345678901,
"text": "How do I read JSON on Android?",
"geo": null,
"user": {
"name": "android_newb",
"followers_count": 41
}
},
{
"id": 912345678902,
"text": "@android_newb just use android.util.JsonReader!",
"geo": [50.454722, -104.606667],
"user": {
"name": "jesse",
"followers_count": 2
}
}
]}
Kode ini mengimplementasikan pengurai untuk struktur di atas:
{@code
public List<Message> readJsonStream(InputStream in) throws IOException {
JsonReader reader = new JsonReader(new InputStreamReader(in, "UTF-8"));
try {
return readMessagesArray(reader);
} finally {
reader.close();
}
}
public List<Message> readMessagesArray(JsonReader reader) throws IOException {
List<Message> messages = new ArrayList<Message>();
reader.beginArray();
while (reader.hasNext()) {
messages.add(readMessage(reader));
}
reader.endArray();
return messages;
}
public Message readMessage(JsonReader reader) throws IOException {
long id = -1;
String text = null;
User user = null;
List<Double> geo = null;
reader.beginObject();
while (reader.hasNext()) {
String name = reader.nextName();
if (name.equals("id")) {
id = reader.nextLong();
} else if (name.equals("text")) {
text = reader.nextString();
} else if (name.equals("geo") && reader.peek() != JsonToken.NULL) {
geo = readDoublesArray(reader);
} else if (name.equals("user")) {
user = readUser(reader);
} else {
reader.skipValue();
}
}
reader.endObject();
return new Message(id, text, user, geo);
}
public List<Double> readDoublesArray(JsonReader reader) throws IOException {
List<Double> doubles = new ArrayList<Double>();
reader.beginArray();
while (reader.hasNext()) {
doubles.add(reader.nextDouble());
}
reader.endArray();
return doubles;
}
public User readUser(JsonReader reader) throws IOException {
String username = null;
int followersCount = -1;
reader.beginObject();
while (reader.hasNext()) {
String name = reader.nextName();
if (name.equals("name")) {
username = reader.nextString();
} else if (name.equals("followers_count")) {
followersCount = reader.nextInt();
} else {
reader.skipValue();
}
}
reader.endObject();
return new User(username, followersCount);
}}
<h3>Penanganan< Angka/h3> Pembaca ini mengizinkan nilai numerik dibaca sebagai string dan nilai string untuk dibaca sebagai angka. Misalnya, kedua elemen array [1, "1"] JSON dapat dibaca menggunakan #nextInt atau #nextString. Perilaku ini dimaksudkan untuk mencegah konversi numerik yang hilang: ganda adalah satu-satunya jenis numerik JavaScript dan nilai yang sangat besar seperti 9007199254740993 tidak dapat diwakili persis pada platform tersebut. Untuk meminimalkan kehilangan presisi, nilai yang sangat besar harus ditulis dan dibaca sebagai string di JSON.
Masing-masing JsonReader dapat digunakan untuk membaca satu aliran JSON. Instans kelas ini tidak aman utas.
Java dokumentasi untuk android.util.JsonReader.
Bagian dari halaman ini adalah modifikasi berdasarkan pekerjaan yang dibuat dan dibagikan oleh Android Open Source Project dan digunakan sesuai dengan istilah yang dijelaskan dalam Lisensi Creative Commons 2.5 Lisensi Atribusi.
Konstruktor
| Nama | Deskripsi |
|---|---|
| JsonReader(Reader) |
Membuat instans baru yang membaca aliran yang dikodekan JSON dari |
Properti
| Nama | Deskripsi |
|---|---|
| Class |
Mengembalikan kelas runtime dari . |
| Handle |
Handel ke instans Android yang mendasar. (Diperoleh dari Object) |
| HasNext |
Mengembalikan true jika array atau objek saat ini memiliki elemen lain. |
| JniIdentityHashCode |
Mendapatkan kode hash identitas yang ditetapkan ke Java peer ini oleh runtime interop. (Diperoleh dari Object) |
| JniManagedPeerState |
Membaca nilai yang dikodekan JSON (RFC 4627) sebagai aliran token. (Diperoleh dari JavaObject) |
| JniPeerMembers |
Membaca nilai yang dikodekan JSON (RFC 4627) sebagai aliran token. |
| Lenient |
Mengembalikan true jika pengurai ini liberal dalam apa yang diterimanya. -or- Konfigurasikan pengurai ini agar liberal dalam apa yang diterimanya. |
| PeerReference |
Mendapatkan referensi objek JNI untuk peer Java ini. (Diperoleh dari Object) |
| ThresholdClass |
API ini mendukung infrastruktur Mono untuk Android dan tidak dimaksudkan untuk digunakan langsung dari kode Anda. (Diperoleh dari Object) |
| ThresholdType |
API ini mendukung infrastruktur Mono untuk Android dan tidak dimaksudkan untuk digunakan langsung dari kode Anda. (Diperoleh dari Object) |
Metode
| Nama | Deskripsi |
|---|---|
| BeginArray() |
Mengonsumsi token berikutnya dari aliran JSON dan menegaskan bahwa itu adalah awal dari array baru. |
| BeginArrayAsync() |
Membaca nilai yang dikodekan JSON (RFC 4627) sebagai aliran token. |
| BeginObject() |
Mengonsumsi token berikutnya dari aliran JSON dan menegaskan bahwa itu adalah awal dari objek baru. |
| BeginObjectAsync() |
Membaca nilai yang dikodekan JSON (RFC 4627) sebagai aliran token. |
| Clone() |
Membuat dan mengembalikan salinan objek ini. (Diperoleh dari Object) |
| Close() |
Menutup pembaca JSON ini dan yang mendasar |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
Membaca nilai yang dikodekan JSON (RFC 4627) sebagai aliran token. (Diperoleh dari JavaObject) |
| Dispose() |
Merilis sumber daya yang dipegang oleh rekan Java ini. (Diperoleh dari Object) |
| Dispose(Boolean) |
Merilis sumber daya yang dipegang oleh rekan Java ini. (Diperoleh dari Object) |
| DisposeUnlessReferenced() |
Membaca nilai yang dikodekan JSON (RFC 4627) sebagai aliran token. (Diperoleh dari JavaObject) |
| EndArray() |
Mengonsumsi token berikutnya dari aliran JSON dan menegaskan bahwa itu adalah akhir dari array saat ini. |
| EndArrayAsync() |
Membaca nilai yang dikodekan JSON (RFC 4627) sebagai aliran token. |
| EndObject() |
Menggunakan token berikutnya dari aliran JSON dan menegaskan bahwa itu adalah akhir dari objek saat ini. |
| EndObjectAsync() |
Membaca nilai yang dikodekan JSON (RFC 4627) sebagai aliran token. |
| Equals(Object) |
Membaca nilai yang dikodekan JSON (RFC 4627) sebagai aliran token. (Diperoleh dari JavaObject) |
| Equals(Object) |
Menunjukkan apakah beberapa objek lain "sama dengan" yang satu ini. (Diperoleh dari Object) |
| GetHashCode() |
Mengembalikan nilai kode hash untuk objek . (Diperoleh dari Object) |
| JavaFinalize() |
Dipanggil oleh pengumpul sampah pada objek ketika pengumpulan sampah menentukan bahwa tidak ada lagi referensi ke objek. (Diperoleh dari Object) |
| NextBoolean() |
Mengembalikan nilai token berikutnya, mengkonsumsinya |
| NextBooleanAsync() |
Membaca nilai yang dikodekan JSON (RFC 4627) sebagai aliran token. |
| NextDouble() |
Mengembalikan nilai token berikutnya, mengkonsumsinya |
| NextDoubleAsync() |
Membaca nilai yang dikodekan JSON (RFC 4627) sebagai aliran token. |
| NextInt() |
Mengembalikan nilai token berikutnya, mengkonsumsinya |
| NextIntAsync() |
Membaca nilai yang dikodekan JSON (RFC 4627) sebagai aliran token. |
| NextLong() |
Mengembalikan nilai token berikutnya, mengkonsumsinya |
| NextLongAsync() |
Membaca nilai yang dikodekan JSON (RFC 4627) sebagai aliran token. |
| NextName() |
Mengembalikan token berikutnya, , |
| NextNameAsync() |
Membaca nilai yang dikodekan JSON (RFC 4627) sebagai aliran token. |
| NextNull() |
Mengonsumsi token berikutnya dari aliran JSON dan menegaskan bahwa itu adalah null harfiah. |
| NextNullAsync() |
Membaca nilai yang dikodekan JSON (RFC 4627) sebagai aliran token. |
| NextString() |
Mengembalikan nilai token berikutnya, mengkonsumsinya |
| NextStringAsync() |
Membaca nilai yang dikodekan JSON (RFC 4627) sebagai aliran token. |
| Notify() |
Membangunkan satu utas yang menunggu monitor objek ini. (Diperoleh dari Object) |
| NotifyAll() |
Membangunkan semua utas yang menunggu monitor objek ini. (Diperoleh dari Object) |
| Peek() |
Mengembalikan jenis token berikutnya tanpa mengkonsumsinya. |
| PeekAsync() |
Membaca nilai yang dikodekan JSON (RFC 4627) sebagai aliran token. |
| SetHandle(IntPtr, JniHandleOwnership) |
Mengatur properti Handle. (Diperoleh dari Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
Membaca nilai yang dikodekan JSON (RFC 4627) sebagai aliran token. (Diperoleh dari JavaObject) |
| SkipValue() |
Melewati nilai berikutnya secara rekursif. |
| SkipValueAsync() |
Membaca nilai yang dikodekan JSON (RFC 4627) sebagai aliran token. |
| ToArray<T>() |
Membuat array terkelola dari pembungkus array Java ini. (Diperoleh dari Object) |
| ToString() |
Mengembalikan representasi string objek. (Diperoleh dari Object) |
| UnregisterFromRuntime() |
Membatalkan pendaftaran peer Java ini dari runtime interop. (Diperoleh dari Object) |
| Wait() |
Menyebabkan utas saat ini menunggu sampai terbangun, biasanya dengan <diberitahu></em> atau <em>terganggu</em>. (Diperoleh dari Object) |
| Wait(Int64, Int32) |
Menyebabkan utas saat ini menunggu sampai terbangun, biasanya dengan <>diberitahu</em> atau <em>terganggu</em>, atau sampai sejumlah waktu nyata berlalu. (Diperoleh dari Object) |
| Wait(Int64) |
Menyebabkan utas saat ini menunggu sampai terbangun, biasanya dengan <>diberitahu</em> atau <em>terganggu</em>, atau sampai sejumlah waktu nyata berlalu. (Diperoleh dari Object) |
Implementasi Antarmuka Eksplisit
| Nama | Deskripsi |
|---|---|
| IJavaPeerable.Disposed() |
Membaca nilai yang dikodekan JSON (RFC 4627) sebagai aliran token. (Diperoleh dari JavaObject) |
| IJavaPeerable.Finalized() |
Membaca nilai yang dikodekan JSON (RFC 4627) sebagai aliran token. (Diperoleh dari JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
Membaca nilai yang dikodekan JSON (RFC 4627) sebagai aliran token. (Diperoleh dari JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
Membaca nilai yang dikodekan JSON (RFC 4627) sebagai aliran token. (Diperoleh dari JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Membaca nilai yang dikodekan JSON (RFC 4627) sebagai aliran token. (Diperoleh dari JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
Membaca nilai yang dikodekan JSON (RFC 4627) sebagai aliran token. (Diperoleh dari JavaObject) |
| IJavaPeerable.UnregisterFromRuntime() |
Membaca nilai yang dikodekan JSON (RFC 4627) sebagai aliran token. |
Metode Ekstensi
| Nama | Deskripsi |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Mendapatkan nama JNI dari jenis instans |
| JavaAs<TResult>(IJavaPeerable) |
Cobalah untuk memaksa |
| JavaCast<TResult>(IJavaObject) |
Melakukan konversi jenis yang diperiksa runtime Android. |
| JavaCast<TResult>(IJavaObject) |
Membaca nilai yang dikodekan JSON (RFC 4627) sebagai aliran token. |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Cobalah untuk memaksa |