2015-03-11 27 views
5

Tôi muốn chuyển đổi chuỗi JSON thành gói android. Yêu cầu này là chuyển các tham số đến một hoạt động trực tiếp từ máy chủ dưới dạng JSON chứ không phải gói. Làm cách nào để chuyển đổi chuỗi JSON thành Gói Android? Vui lòng cung cấp mã trừu tượng nếu có thể.Chuyển đổi JSON thành Android Bundle

Trả lời

-2

chỉ một cách nhanh chóng 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); 

và sau đó trong B.class ...

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

more info about json and java

+0

Tôi có nghĩa là JSON Object sẽ kèm theo đối tượng. – Raj

+0

Điều này không trả lời được câu hỏi. – Matthew

+0

Không trả lời ... – 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

Đây là muộn, nhưng có lẽ nó sẽ giúp người tìm kiếm chủ đề này:

/** 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;                         
}  
Các vấn đề liên quan