Java tutorial
/* * Copyright (C) 2016 The Android Open Source Project * * 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. */ package com.birbit.jsonapi; import com.google.gson.*; import java.lang.reflect.Type; import java.util.HashMap; import java.util.Map; import java.util.Set; @SuppressWarnings("WeakerAccess") public class JsonApiLinksDeserializer implements JsonDeserializer<JsonApiLinks> { public static final JsonApiLinksDeserializer INSTANCE = new JsonApiLinksDeserializer(); private JsonApiLinksDeserializer() { } @Override public JsonApiLinks deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { if (!json.isJsonObject()) { throw new JsonParseException("JsonApiLinks json element must be an object"); } JsonObject asJsonObject = json.getAsJsonObject(); Set<Map.Entry<String, JsonElement>> entries = asJsonObject.entrySet(); if (entries.isEmpty()) { return JsonApiLinks.EMPTY; } Map<String, JsonApiLinkItem> result = new HashMap<String, JsonApiLinkItem>(); for (Map.Entry<String, JsonElement> entry : asJsonObject.entrySet()) { JsonElement value = entry.getValue(); if (value.isJsonPrimitive()) { result.put(entry.getKey(), new JsonApiLinkItem(entry.getValue().getAsString())); } else { result.put(entry.getKey(), context.<JsonApiLinkItem>deserialize(entry.getValue(), JsonApiLinkItem.class)); } } return new JsonApiLinks(result); } }