2012-02-08 15 views
34

वर्तमान में मैं वेबव्यू फ्रंट एंड के साथ देशी एंड्रॉइड ऐप पर काम कर रहा हूं।जीसन जेसन में डेटा ऑब्जेक्ट्स की एक सरणी चालू करें - एंड्रॉइड

मैं की तरह कुछ है:

public class dataObject 
{ 
    int a; 
    String b; 
} 

और गतिविधि में,

मैं dataObject की एक सरणी बना दिया है, कहते हैं कि dataObject एक्स [5];

अब मैं इन 5 डेटा ऑब्जेक्ट को अपने जावास्क्रिप्ट वेब व्यू इंटरफ़ेस को कॉलबैक फ़ंक्शन में JSON के रूप में पास करना चाहता हूं।

मैंने इंटरनेट से देखा, ऐसा लगता है कि अधिकांश ट्यूटोरियल fromJson() को परिवर्तित करने के बारे में बात करते हैं। toJson() के बारे में बहुत कुछ नहीं है। मैंने एक पाया जो मुझे सिखाया कि dataObject.toJson(), काम करेगा।

लेकिन मैं सभी 5 डेटा ऑब्जेक्ट्स कैसे पास कर सकता हूं?

+1

कोशिश 'स्ट्रिंग json = नए Gson()। ToJson (dataObjects)' जहां dataObjects है एक dataObject [] – reTs

उत्तर

81

ऑब्जेक्ट्स की सूची के साथ जीसन का उपयोग करने के तरीके पर एक व्यापक उदाहरण दिया गया है। यह, बिल्कुल कैसे Json से, कैसे सूचियों को संदर्भित करने के लिए/परिवर्तित करने के लिए प्रदर्शित करना चाहिए आदि

Test.java:

import com.google.gson.Gson; 
import java.util.List; 
import java.util.ArrayList; 
import com.google.gson.reflect.TypeToken; 
import java.lang.reflect.Type; 


public class Test { 

    public static void main (String[] args) { 

    // Initialize a list of type DataObject 
    List<DataObject> objList = new ArrayList<DataObject>(); 
    objList.add(new DataObject(0, "zero")); 
    objList.add(new DataObject(1, "one")); 
    objList.add(new DataObject(2, "two")); 

    // Convert the object to a JSON string 
    String json = new Gson().toJson(objList); 
    System.out.println(json); 

    // Now convert the JSON string back to your java object 
    Type type = new TypeToken<List<DataObject>>(){}.getType(); 
    List<DataObject> inpList = new Gson().fromJson(json, type); 
    for (int i=0;i<inpList.size();i++) { 
     DataObject x = inpList.get(i); 
     System.out.println(x); 
    } 

    } 


    private static class DataObject { 
    private int a; 
    private String b; 

    public DataObject(int a, String b) { 
     this.a = a; 
     this.b = b; 
    } 

    public String toString() { 
     return "a = " +a+ ", b = " +b; 
    } 
    } 

} 

यह संकलन करने के लिए:

javac -cp "gson-2.1.jar:." Test.java 

और आखिरकार इसे चलाने के लिए:

java -cp "gson-2.1.jar:." Test 

ध्यान दें कि यदि आप विंडोज का उपयोग कर रहे हैं, तो आपको पिछले दो आदेशों में ; पर स्विच करना होगा।

आप इसे चलाने के बाद, आप निम्न उत्पादन देखना चाहिए:

[{"a":0,"b":"zero"},{"a":1,"b":"one"},{"a":2,"b":"two"}] 
a = 0, b = zero 
a = 1, b = one 
a = 2, b = two 

ध्यान रखें कि यह केवल एक कमांड लाइन कार्यक्रम है यह कैसे काम करता प्रदर्शित करने के लिए, लेकिन एक ही सिद्धांतों के भीतर लागू एंड्रॉयड पर्यावरण (जार libs, आदि को संदर्भित)

+0

व्यवहार ही DataObject [] के रूप में विरोध किया सूची के लिए है? – lalitm

+0

मेरे अपने प्रश्न का उत्तर दें: हाँ व्यवहार समान है। – lalitm

+0

धन्यवाद !! यह –

0

एक सहायक वर्ग का उपयोग कर gson सूची अक्रमांकन की मेरी संस्करण:

public List<E> getList(Class<E> type, JSONArray json) throws Exception { 
    Gson gsonB = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create(); 

    return gsonB.fromJson(json.toString(), new JsonListHelper<E>(type)); 
} 



public class JsonListHelper<T> implements ParameterizedType { 

    private Class<?> wrapped; 

    public JsonListHelper(Class<T> wrapped) { 
    this.wrapped = wrapped; 
    } 

    public Type[] getActualTypeArguments() { 
    return new Type[] {wrapped}; 
    } 

    public Type getRawType() { 
    return List.class; 
    } 

    public Type getOwnerType() { 
    return null; 
    } 

} 

प्रयोग

List<Object> objects = getList(Object.class, myJsonArray); 
संबंधित मुद्दे