2015-03-11 13 views
5

Ich möchte eine JSON-Zeichenfolge in Android-Bundle konvertieren. Die Anforderung bestand darin, Parameter direkt vom Server an eine Aktivität als JSON und nicht als Paket zu übergeben. Wie konvertiert man eine JSON-Zeichenfolge in ein Android-Bundle? Bitte geben Sie, wenn möglich, einen abstrakten Code an.JSON in Android-Bundle konvertieren

Antwort

-2

nur eine schnelle SSCCEE

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

und dann in B.class ...

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

more info about json and java

+0

Ich meinte JSON Objekt Objekt zu bündeln. – Raj

+0

Dies beantwortet die Frage nicht. – Matthew

+0

antwortet nicht ... – 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

Das ist spät, aber vielleicht hilft es, jemanden zu finden dieses Thema anschauen:

/** 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;                         
}