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

eu.unicore.persist.impl.JSONMarshaller Maven / Gradle / Ivy

The newest version!
package eu.unicore.persist.impl;

import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

import eu.unicore.persist.ObjectMarshaller;
import eu.unicore.persist.util.GSONUtil;

public class JSONMarshaller implements ObjectMarshaller {

	private final Gson gson;

	private final ClassclassOfT;

	public JSONMarshaller(ClassclassOfT){
		this.classOfT = classOfT;
		this.gson=build();
	}
	
	private Gson build(){
		GsonBuilder builder = new GsonBuilder();
		GSONUtil.registerTypeConverters(classOfT, builder);
		return builder.create();
	}
	@Override
	public T deserialize(InputStream is) {
		return gson.fromJson(new InputStreamReader(is), classOfT);
	}

	@Override
	public T deserialize(byte[] data) {
		return deserialize(new ByteArrayInputStream(data));
	}

	@Override
	public byte[] serialize(T object) {
		return encode(object).getBytes();
	}

	@Override
	public String encode(T input) {
		return gson.toJson(input);
	}

	@Override
	public T decode(String input) {
		return gson.fromJson(input, classOfT);
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy