Convert object to JSON in Android

JavaAndroidJsonRest

Java Problem Overview


Is there a simple method to convert any object to JSON in Android?

Java Solutions


Solution 1 - Java

Most people are using gson : check this

Gson gson = new Gson();
String json = gson.toJson(myObj);

Solution 2 - Java

public class Producto {

int idProducto;
String nombre;
Double precio;



public Producto(int idProducto, String nombre, Double precio) {
	
	this.idProducto = idProducto;
	this.nombre = nombre;
	this.precio = precio;
	
}
public int getIdProducto() {
	return idProducto;
}
public void setIdProducto(int idProducto) {
	this.idProducto = idProducto;
}
public String getNombre() {
	return nombre;
}
public void setNombre(String nombre) {
	this.nombre = nombre;
}
public Double getPrecio() {
	return precio;
}
public void setPrecio(Double precio) {
	this.precio = precio;
}

public String toJSON(){
	
	JSONObject jsonObject= new JSONObject();
	try {
		jsonObject.put("id", getIdProducto());
		jsonObject.put("nombre", getNombre());
		jsonObject.put("precio", getPrecio());
		
		return jsonObject.toString();
	} catch (JSONException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
		return "";
	}
	
}

Solution 3 - Java

Might be better choice:

@Override
public String toString() {
    return new GsonBuilder().create().toJson(this, Producto.class);
}

Solution 4 - Java

download the library Gradle:

implementation 'com.google.code.gson:gson:2.8.2'

To use the library in a method.

Gson gson = new Gson();

//transform a java object to json
System.out.println("json =" + gson.toJson(Object.class).toString());

//Transform a json to java object
String json = string_json;
List<Object> lstObject = gson.fromJson(json_ string, Object.class);

Solution 5 - Java

Spring for Android do this using RestTemplate easily:

final String url = "http://192.168.1.50:9000/greeting";
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
Greeting greeting = restTemplate.getForObject(url, Greeting.class);

Solution 6 - Java

As of Android 3.0 (API Level 11) Android has a more recent and improved JSON Parser.

http://developer.android.com/reference/android/util/JsonReader.html

> Reads a JSON (RFC 4627) encoded value as a stream of tokens. This > stream includes both literal values (strings, numbers, booleans, and > nulls) as well as the begin and end delimiters of objects and arrays. > The tokens are traversed in depth-first order, the same order that > they appear in the JSON document. Within JSON objects, name/value > pairs are represented by a single token.

Solution 7 - Java

You can use Jackson library too (importing it into your project), creating a convert method which use your current object class to serialize or deserialize it:

import com.fasterxml.jackson.core.JsonGenerationException;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;

private String convertObjectToJson(ObjectClass object) {
        ObjectMapper mapper = new ObjectMapper();
        //By default all fields without explicit view definition are included, disable this
        mapper.configure(JsonParser.Feature.IGNORE_UNDEFINED, false);

        String jsonString = "";

        try {
            jsonString = mapper.writerWithView(ObjectClass.class).writeValueAsString(object);
            System.out.println(jsonString);
        } catch (JsonGenerationException e) {
            e.printStackTrace();
        } catch (JsonMappingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        return jsonString;
    }

This way you can use several Views to send different JSON object strings in POST/PUT/PATCH operations.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionThizzerView Question on Stackoverflow
Solution 1 - JavaJames LView Answer on Stackoverflow
Solution 2 - JavaingyesidView Answer on Stackoverflow
Solution 3 - JavaHesamView Answer on Stackoverflow
Solution 4 - JavaFaxon Lander MontenegroView Answer on Stackoverflow
Solution 5 - JavaSaeed ZarinfamView Answer on Stackoverflow
Solution 6 - JavaMobView Answer on Stackoverflow
Solution 7 - JavaNikasha Von carsteinView Answer on Stackoverflow