2015-03-11 17 views
5

Voglio convertire una stringa JSON in un pacchetto Android. Il requisito era come passare parametri ad un'attività direttamente dal server come JSON piuttosto che bundle. Come convertire una stringa JSON in un pacchetto Android? Si prega di fornire il codice astratto, se possibile.Converti pacchetto JSON in Android

risposta

-2

solo un rapido 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); 

e poi in B.class ...

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

more info about json and java

+0

intendevo JSON oggetto di Bundle oggetto. – Raj

+0

Questo non risponde alla domanda. – Matthew

+0

Non risponde ... – 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

Questo è in ritardo, ma forse aiuta qualcuno a trovare questa discussione:

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