Serializer is a tiny utility that allows you to de/serialize object from/to JSON blob. This in a way allows
you to save the JSON blob as a string in a SharedPreference
or in a database.
By default, Serializer
comes with Gson
and Moshi
as the underlining serialization engines. Gson is used
by default with Serializer but can easily be overwritten to make use of either Moshi
or any other
serialization engine. Eg. Jackson
or custom made one.
You can use it with tools like Tray, which is a SharedPreferences
with
multi-process support. This issue inspired this library.
To integrate the library into your app, you need to make a few changes in the build.gradle
file
as follows:
Step 1.
Add the JitPack repository to your build file. Add it to your root build.gradle
in the repositories
block:
allprojects {
repositories {
maven { url "https://jitpack.io" }
}
}
Step 2. Add the dependency
dependencies {
compile 'com.github.eyedol:serializer:1.0.0'
}
Let's say you want to use the default Gson
to serialize a model named Cinema
then save it into a SharedPreference
.
// Build default serializer object
Serializer mSerializer = new Serializer.Builder().build();
Cinema cinema = new Cinema("addhen cinemas", "accra");
// Serialize into a JSON string
String cinemaJson = mSerializer.strategy(Cinema.class).serialze(cinema);
// Get the shared preferences
final SharedPreferences sharedPreferences = context.getSharedPreferences("android-shared-prefs", MODE_PRIVATE);
// Save the object into it as a json string
sharedPreferences.edit().putString("cinema", cinemaJson).apply();
// Now retrieve it and deserialize it back into the object.
cinemaJson = sharedPreferences.getString("cinema", null);
cinema = mSerializer.strategy(Cinema.class).deserialize(cinemaJson);
Let's say you're familiar with Moshi
and wants to use that instead.
// Build serializer object with moshi
MoshiSerializationStrategyFactory factory = MoshiSerializationStrategyFactory.create();
Serializer mSerializer = new Serializer.Builder()
.setSerializationStrategyFactory(factory)
.build();
Cinema cinema = new Cinema("addhen cinemas", "accra");
List<Cinema> cinemas = new ArrayList<>();
cinemas.add(cinema);
// Serialize into a JSON string
String cinemasJson = mSerializer.strategy(List.class).serialize(cinemas);
// Get the shared preferences
final SharedPreferences sharedPreferences = context.getSharedPreferences("android-shared-prefs", MODE_PRIVATE);
// Save the list into it as a json string
sharedPreferences.edit().putString("cinemas", cinemasJson).apply();
// Now retrieve it and deserialize it back into a list object.
cinemasJson = sharedPreferences.getString("cinemas", null);
cinemas = Arrays.asList(mSerializer.strategy(Cinema[].class).deserialize(cinemasJson));
For more usage examples, look inside the test package.
Copyright 2016 Addhen Limited
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.