在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();}