2012-08-01 228 views
4

我有像三個coloums(id(整數),startdate(文本),enddate(文本))的數據庫。 我想讀這些coloums的所有條目,將它們轉換爲Json併發送到web url。 我知道如何讀取值,但不知道如何從這些值製作Json。 請任何編碼幫助...如何創建Json對象

回答

3

爲什麼你不試:
`

JSONObject object = new JSONObject(); 
    try { 
     object.put("id", id); 
     object.put("startDate", startDate); 
     object.put("endDate", endDate); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    }` 

然後通過HTTP POST發送JSON對象
`

HttpClient hc = new DefaultHttpClient(); 
     String message; 

     HttpPost p = new HttpPost(url);  
try { 
     message = object.toString(); 


     p.setEntity(new StringEntity(message, "UTF8")); 
     p.setHeader("Content-type", "application/json"); 
      HttpResponse resp = hc.execute(p); 
      if (resp != null) { 
       if (resp.getStatusLine().getStatusCode() == 204) 
        result = true; 
      } 

      Log.d("Status line", "" + resp.getStatusLine().getStatusCode()); 
     } catch (Exception e) { 
      e.printStackTrace(); 

     }` 

所以例如,如果你想創建一個包含所有你從一個SQLite得到三胞胎JSON對象分貝這將是:

String query = "SELECT *"+ 
      "from "+TABLE_NAME; 

    Cursor c = db.rawQuery(query,new String[]{}); 
    Log.d("query",query); 

    c.moveToFirst(); 
    while(c.moveToNext()){ 
     try { 
      int id = c.getInt(c.getColumnIndex("ID")); 
      String startDate = c.getString(c.getColumnIndex("START_DATE")); 
      String endDate = c.getString(c.getColumnIndex("END_DATE")); 

    object.put("id", id); 
    object.put("startDate", startDate); 
    object.put("endDate", endDate); }} 

其中ID,START_DATE和END_DATE是數據庫中字段的相應名稱。
我無法測試我的代碼,但現在我相信它的工作原理

3

下面是如何使一個JSON對象:

JSONObject jsonObject = new JSONObject(); 
jsonObject.put("id", idValue); 
jsonObject.put("startDate", endDateValue); 
jsonObject.put("endDate", endDateValue); 

您還可以通過執行獲得JSON作爲字符串:

jsonObject.toString(); 
+0

這裏是[文件](http://developer.android.com/reference/org/json/JSONObject.html);) – xiaowl 2012-08-01 08:22:22

+0

當我環你的代碼,是它爲第二個條目創建新的Json對象...? – user1567965 2012-08-01 09:04:35

+0

是的。由於存在「= new JSONObject();」 – 2012-08-01 09:20:44

0
JSONObject json = new JSONObject(); 
    json.put("id", id); 
    json.put("startdate", startdate); 
    json.put("enddate", enddate); 
0

使用傑克遜庫,可以在地圖或Java bean的轉換成JSON字符串或生成一個JSON字符串的地圖或JavaBean。你可能會寫一個實用程序類:

public class JsonUtil { 
    private static final ObjectMapper MAPPER = new ObjectMapper(); 

    public static String convertToJsonStr(Object model) throws IOException { 
     return MAPPER.writeValueAsString(model); 
    } 

    @SuppressWarnings("unchecked") 
    public static Map<String, Object> readFromStr(String content) throws IOException { 
     return readFromStr(content, Map.class); 
    } 

    public static <T> T readFromStr(String content, Class<T> clazz) throws IOException { 
     return MAPPER.readValue(content, clazz); 
    } 
}