All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.zhxu.data.gson.GsonMap Maven / Gradle / Ivy

package cn.zhxu.data.gson;

import com.google.gson.JsonObject;

import java.util.AbstractMap;
import java.util.AbstractSet;
import java.util.Iterator;
import java.util.Set;

/**
 * @author Troy.Zhou @ 2022/5/27
 * @since v1.5.0
 */
public class GsonMap extends AbstractMap {

    private final JsonObject json;

    public GsonMap(JsonObject json) {
        this.json = json;
    }

    transient Set> entrySet;

    @Override
    public Set> entrySet() {
        if (entrySet == null) {
            entrySet = new AbstractSet>() {

                @Override
                public Iterator> iterator() {
                    Iterator keyIt = json.keySet().iterator();
                    return new Iterator>() {

                        @Override
                        public boolean hasNext() {
                            return keyIt.hasNext();
                        }

                        @Override
                        public Entry next() {
                            String key = keyIt.next();
                            Object value = GsonDataConvertor.toPlainObject(json.get(key));
                            return new SimpleEntry<>(key, value);
                        }
                    };
                }

                @Override
                public int size() {
                    return json.size();
                }
            };
        }
        return entrySet;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy