Android में JSON में ऑब्जेक्ट कन्वर्ट करें


129

एंड्रॉइड में किसी भी ऑब्जेक्ट को JSON में बदलने के लिए एक सरल विधि है?

जवाबों:


271

ज्यादातर लोग gson का उपयोग कर रहे हैं: इसे देखें

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

15
और जैक्सन भी।
मोब

4
क्यों हम toson के लिए कोई एम्बेडेड विधि है? लेकिन हमजॉन के लिए है?
एम

उनके पास यह उपयोग करने के लिए प्रयास करें।
गुमराह

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

}

1
मैं इस तरह से पसंद करता हूं, प्रत्येक ऑब्जेक्ट की अपनी स्ट्रिंग विधि होती है, अंतर्दृष्टि के लिए धन्यवाद!
भीमबीम

10

बेहतर विकल्प हो सकता है:

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

यह एक बेहतर विकल्प क्यों है?
नेरिया नाचम

1
एक वस्तु को JSON स्ट्रिंग में परिवर्तित करने में सक्षम होने के लिए आवश्यक नहीं है कि आप ऑब्जेक्ट का स्ट्रिंग प्रतिनिधित्व हमेशा JSON चाहते हैं।
थिज़र

@NeriaNachum, यह बात मेरे दिमाग में थी जब मैंने बहुत सारी विशेषताओं के साथ एक वर्ग होने का उत्तर दिया। toString()जब आप डिफ़ॉल्ट तरीके से प्रिंट करते हैं, तो इसकी विधि को ओवरराइड करने से कई स्ट्रींग ऑब्जेक्ट बनते हैं - एंड्रॉइड स्टूडियो या इंटेलीज आइडिया द्वारा उत्पन्न - हालांकि, यह कोड की एक लाइन है और GsonBuilder की शक्ति का उपयोग करता है।
हेसाम

@ टिज़र, आप बिलकुल सही हैं। मैं सोच रहा था कि डेवलपर्स द्वारा साझा किया जाना और देखा जाना अच्छा है (वे जो कम से कम दृष्टिकोण से परिचित नहीं हैं)। फिर जब भी जरूरत होगी वे इस्तेमाल करेंगे।
हेसाम

मैं भी इसे बेहतर विकल्प के रूप में महसूस करता हूं क्योंकि रूपांतरण को मॉडल से ही नियंत्रित किया जा सकता है, कार्यान्वयन को अमूर्त करना।
adnaan.zohran

4

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

आपको जैटिंग जार में क्लासप्थ में स्वचालित रूप से जोड़ा जाता है, तो आपको मैपिंगजैकसन 2HttpMessageConverter को RestTemplate में जोड़ने की आवश्यकता नहीं है।
क्लॉस ग्रोएनबेक

2

Android 3.0 (API Level 11) के रूप में Android के पास हाल ही में और बेहतर JSON पार्सर है।

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

टोकन की एक धारा के रूप में एक JSON (RFC 4627) एन्कोडेड मान पढ़ता है। इस धारा में शाब्दिक मान (स्ट्रिंग्स, संख्या, बूलियन और नल) दोनों के साथ-साथ वस्तुओं और सरणियों के आरंभ और अंत में शामिल हैं। टोकन को पहले-पहले क्रम में विभाजित किया गया है, वही क्रम जो वे JSON दस्तावेज़ में दिखाई देते हैं। JSON ऑब्जेक्ट्स के भीतर, नाम / मान जोड़े एकल टोकन द्वारा दर्शाए जाते हैं।


1
यह वही था जो पूछा गया था।
मैथ्यू पढ़ा

2

लाइब्रेरी ग्रेडेल डाउनलोड करें:

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

एक विधि में पुस्तकालय का उपयोग करने के लिए।

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);
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.