2011-04-06 161 views

回答

175

大多數人都使用GSON:https://github.com/google/gson

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

並且還傑克遜。 – Mob 2011-12-08 13:48:48

+1

爲什麼我們沒有toJson的嵌入方法?但是我們從傑森來? – 2017-11-22 10:31:22

3

就Android 3.0(API等級11)的Android有一個較新的和改進的JSON解析器。

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

讀取編碼值作爲標記的流的JSON(RFC 4627)。這個 流包括文字值(字符串,數字,布爾值和空值)以及對象和數組的開始和結束分隔符。 這些令牌按深度優先順序遍歷,它們與 出現在JSON文檔中的順序相同。在JSON對象中,名稱/值 對由單個標記表示。

50
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 ""; 
    } 

} 
+0

我更喜歡這種方式,每個對象都有自己的stringify方法,謝謝你的洞察! – Bhimbim 2017-12-18 04:33:59

2

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

您不需要將MappingJackson2HttpMessageConverter添加到RestTemplate,如果Jackson Jar在類路徑中,它會自動添加。 – 2016-10-11 14:14:43

-1

這如何可以一個JSON字符串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();} 
+2

這不是一個問題的答案。此外jsonObject在這裏是未知的。 – CoolMind 2016-04-08 13:02:18

7

可能是更好的選擇:

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

爲什麼這是一個更好的選擇? – 2016-10-23 07:25:14

+0

希望能夠將對象轉換爲JSON字符串並不一定意味着您希望對象的字符串表示始終爲JSON。 – Thys 2016-10-23 11:49:08

+0

@NeriaNachum,當我回答有很多屬性的課程時,我腦海中浮現出這樣的東西。當以默認方式打印時,覆蓋它的'toString()'方法會創建許多String對象 - 由Android Studio或IntelliJ Idea生成 - 但是,這是一行代碼並使用GsonBuilder的強大功能。 – Hesam 2016-10-24 00:24:01