2015-03-11 13 views
5

Chcę przekonwertować ciąg JSON na pakiet Android. Wymaganie było jak przekazanie parametrów do działania bezpośrednio z serwera jako JSON, a nie do pakietu. Jak przekonwertować ciąg JSON do pakietu Android? Jeśli to możliwe, podaj abstrakcyjny kod.Konwersja JSON na pakiet Android

Odpowiedz

-2

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

a następnie w B.class ...

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

more info about json and java

+0

mi chodziło JSON obiekt do Bundle Object. – Raj

+0

To nie odpowiada na pytanie. – Matthew

+0

Nie odpowiada ... – 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

Jest późno, ale może ktoś pomoże znalezieniem ten wątek:

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