在 Android 中有没有一种简单的方法可以将任何对象转换成 JSON?
大多数人都在使用 gson: 看看这个
Gson gson = new Gson(); String json = gson.toJson(myObj);
从 Android 3.0(API Level 11)开始,Android 有了一个更新更好的 JSON 解析器。
Http://developer.android.com/reference/android/util/jsonreader.html
将 JSON (RFC4627)编码的值作为令牌流读取 Stream 包括两个文本值(字符串、数字、布尔值和 Null)以及对象和数组的开始和结束分隔符。 标记以深度优先的顺序遍历,与 在 JSON 对象中,name/value 对由单个标记表示。
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 ""; } }
Spring for Android 使用 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);
也许是个更好的选择:
@Override public String toString() { return new GsonBuilder().create().toJson(this, Producto.class); }
下载图书馆分级:
implementation 'com.google.code.gson:gson:2.9.0'
在方法中使用库。
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);
科特林的方式
val json = Gson().toJson(myObj)