2015-03-11 36 views
5

Bir JSON dizesini android Bundle'a dönüştürmek istiyorum. Gereksinim, bir sunucuya doğrudan sunucudan ziyade JSON olarak bir etkinliğe geçmek gibiydi. JSON dizesini Android Bundle'a nasıl dönüştürebilirim? Mümkünse lütfen soyut kodu sağlayın. sadece hızlı SSCCEEJSON'u Android Paketine Dönüştürme

A.class

// key for bundle ... 
public static final JSON_STRING = "jsonString"; 

Intent intent = new Intent(A.this, B.class); 
Bundle bundle = new Bundle(); 
bundle.putString(JSON_STRING,json.toString()); 
intent.putExtras(bundle); 
startActivity(intent); 

ve sonra B.classyılında

cevap

-2

...

Intent intent = getIntent(); 
Bundle extras = intent.getExtras(); 
String jsonString = extras.getString(A.JSON_STRING); 

more info about json and java

+0

Ben Nesne Bundle JSON Nesne anlamına geliyordu. – Raj

+0

Bu soruya cevap vermiyor. – Matthew

+0

Cevap vermiyor ... – Redwarp

12
public static Bundle jsonStringToBundle(String jsonString){ 
    try { 
     JSONObject jsonObject = toJsonObject(jsonString); 
     return jsonToBundle(jsonObject); 
    } catch (JSONException ignored) { 

    } 
    return null; 
} 
public static JSONObject toJsonObject(String jsonString) throws JSONException { 
    return new JSONObject(jsonString); 
} 
public static Bundle jsonToBundle(JSONObject jsonObject) throws JSONException { 
    Bundle bundle = new Bundle(); 
    Iterator iter = jsonObject.keys(); 
    while(iter.hasNext()){ 
     String key = (String)iter.next(); 
     String value = jsonObject.getString(key); 
     bundle.putString(key,value); 
    } 
    return bundle; 
} 
5

Bu geç, ama belki bu konuyu bulma birisi yardımcı olur:

/** Convert a JSON object to a Bundle that can be passed as the extras of           
* an Intent. It passes each number as a double, and everything else as a           
* String, arrays of those two are also supported. */                
public static Bundle fromJson(JSONObject s) {                  
    Bundle bundle = new Bundle();                     

    for (Iterator<String> it = s.keys(); it.hasNext();) {               
     String key = it.next();                      
     JSONArray arr = s.optJSONArray(key);                  
     Double num = s.optDouble(key);                    
     String str = s.optString(key);                    

     if (arr != null && arr.length() <= 0)                  
      bundle.putStringArray(key, new String[]{});                

     else if (arr != null && !Double.isNaN(arr.optDouble(0))) {             
      double[] newarr = new double[arr.length()];                
      for (int i=0; i<arr.length(); i++)                  
       newarr[i] = arr.optDouble(i);                  
      bundle.putDoubleArray(key, newarr);                  
     }                           

     else if (arr != null && arr.optString(0) != null) {               
      String[] newarr = new String[arr.length()];                
      for (int i=0; i<arr.length(); i++)                  
       newarr[i] = arr.optString(i);                  
      bundle.putStringArray(key, newarr);                  
     }                           

     else if (!num.isNaN())                      
      bundle.putDouble(key, num);                    

     else if (str != null)                      
      bundle.putString(key, str);                    

     else                          
      System.err.println("unable to transform json to bundle " + key);          
    }                            

    return bundle;                         
}