Нативная разработка мобильных приложений



Download 3,69 Mb.
Pdf ko'rish
bet132/228
Sana21.07.2022
Hajmi3,69 Mb.
#834838
1   ...   128   129   130   131   132   133   134   135   ...   228
Bog'liq
Нативная разработка мобильных приложений

org.json
Для подробного знакомства с возможностями этой библиотеки мы советуем 
обратиться к документации для разработчиков (
https://ore
il.ly/5Zw0T
).
Сериализация и десериализация с использованием пакета 
org.jso
n
реализу
-
ются довольно просто. Возьмем в качестве примера класс 
Author
, показанный 
выше. Чтобы сериализовать экземпляр этого класса, нужно создать экземпляр 
JSONObject
, скопировать в него свойства из класса 
Author
и вызвать метод 
to­
String
:
Java
Author author = new Author();
author.setName("Mike");


194

Сериализация и транспорты
// ...
JSONObject jsonObject = new JSONObject();
jsonObject.put("name", author.getName());
Log.d("MyTag", jsonObject.toString());
Kotlin
val author = Author()
author.name = "Mike"
val jsonObject = JSONObject()
jsonObject.put("name", author.name)
Log.d("MyTag", jsonObject.toString())
Этот код выведет 
{"name":"Mike"}
.
Десериализация производится еще проще:
Java
String json = "{name:'Mike'}";
JSONObject jsonObject = new JSONObject(json);
Log.d("MyTag", jsonObject.get("name"));
Kotlin
val json = "{name:'Mike'}"
val jsonObject = JSONObject(json)
Log.d("MyTag", jsonObject.get("name") as String?)
Этот код выведет 
Mike
.
Аналогичные средства есть для массивов (списков), правда, при этом при
-
дется добавить довольно большое количество преобразований с контролиру
-
емыми исключениями, обрабатывающих большие объекты. В Gson подобные 
преобразования реализуются проще.
Сериализация с использованием Gson реализуется почти так же, кроме от
-
сутствия необходимости использовать промежуточную обертку:
Author author = new Author();
author.setName("Mike");
Log.d("MyTag", new Gson().toJson(author));
Этот код выведет 
{"mName":"Mike"}
.
Не заметили ничего странного? Имя 
mName
не совпадает с именем 
name
. Gson 
по умолчанию использует имена свойств вместо методов доступа.
Этот способ записи – с использованием префикса 
m
для переменных-членов 
и префикса 
s
для статических переменных – известен как венгерская нотация. 
Вы уже видели, что сам Android использует исключительно венгерскую нота
-
цию, поэтому многие разработчики приложений для Android тоже используют 
этот стиль. Это легко исправить, как будет показано ниже, но имейте в виду, 
что использование венгерской нотации создает проблемы при применении 
Gson (и другими подобными библиотеками). Обратите также внимание, что 
проблема с венгерской (или любой другой) нотацией НЕ является проблемой 
в Kotlin. Если класс 
Author
определить, как показано в примере на Kotlin, вы 
получите вполне ожидаемый результат: 
{"name":
"Mike"}
.


Android 

195
Но вернемся к примеру на Java. Эта проблема весьма распространена, но она 
имеет простое решение – достаточно просто снабдить свойства аннотациями 
@SerializedName
, в которых указать альтернативные имена. Например, рассмот-
рим следующее определение класса 
Author
:
public class Author {
@SerializedName("name")
private String mName;
public String getName() {
return mName;
}
public void setName(String name) {
mName = name;
}
}
Теперь, попытавшись сериализовать экземпляр этого класса, вы получите 
{"name":"Mike"}
. Обратите внимание, что этот прием действует в обоих направ
-
лениях: десериализация аннотированных свойств тоже выполняется правиль
-
но. Предположим, что мы десериализуем экземпляр класса 
Author
, как показа
-
но ниже:
String json = "{name:'Mike'}";
Author author = new Gson().fromJson(json, Author.class);
Log.d("MyTag", author.getName());
Этот код выведет 
Mike
, как и ожидалось.
Самое большое преимущество Gson в том, что эта библиотека благополуч
-
но обрабатывает подобные рекурсивные стратегии, чем не могут похвастаться 
классы из 
o
rg.json
.

Download 3,69 Mb.

Do'stlaringiz bilan baham:
1   ...   128   129   130   131   132   133   134   135   ...   228




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish