在Android中将对象转换为JSON

有没有一种简单的方法在Android中将任何对象转换为JSON?

大多数人使用gson: https : //github.com/google/gson

Gson gson = new Gson(); String json = gson.toJson(myObj); 
 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 ""; } } 

可能是更好的select:

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

从Android 3.0(API Level 11)开始,Android有一个更新的JSONparsing器。

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

将JSON(RFC 4627)编码值读取为令牌stream。 这个stream包括字面值(string,数字,布尔值和空值)以及对象和数组的开始和结束分隔符。 令牌按深度优先顺序遍历,与JSON文档中显示的顺序相同。 在JSON对象中,名称/值对由单个标记表示。

Android的Spring可以轻松使用RestTemplate:

 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); 

这是如何可以将JSONstring本地转换为JSON对象而无需使用任何外部库并获取对应的键值。 希望下面的工作。

 String JSONstring = "{/"key1/":/"I am Value for Key1/"}"; //Import these libraries import org.json.JSONException; import org.json.JSONObject; //Code below try { String myVariable = jsonObject.optString("key1", "Fallback Value if key1 is not present"); System.out.println("Testing: "+ myVariable); } catch (JSONException e) {e.printStackTrace();}