2012-08-08 43 views
1

我想創建選定選項的JSON對象。我已經編寫了Java代碼,但它創建了所有數據庫值的JSON。從所選對象創建JSON

的JSON代碼:

rs = stmt.executeQuery("SELECT file_id,fid from nonspatial_data where file_id=1"); 

JSONArray jArray = new JSONArray(); 

while (rs.next()) 
{ 
    String FileID_json=rs.getString("file_id"); 
    String fid_json=rs.getString("fid"); 
    JSONObject jobj = new ``JSONObject(); 
    jobj.put("file_id", FileID_json); 
    jobj.put("fid", fid_json); 
    jArray.add(jobj); 
} 

JSONObject features = new JSONObject(); 
features.put("features", jArray); 

我想創建選定的file_id的JSON。

任何幫助表示讚賞。

回答

0

我不確定你想要json的格式,但你應該真的使用像傑克遜這樣的庫(有序列化/映射器幫助)。使用它的方法是:創建一個表示json對象的域對象,並通過這個序列化器傳遞它,並且你有json。

注意:爲了保持代碼簡潔,我不使用java的最佳實踐(例如,創建字符串常量等)。我也沒有測試過這個代碼,但你應該對我的建議有個很好的想法。

public class SomeObject{ 
    Map<String,Object> model; 
    public void setFoo(String foo) {...} 
    public String getFoo() { 
    return model.get("foo"); 
    } 

    // if you have more than one model, consider moving this method to a superclass 
    public String toJson() { 
    Map<String, Object> result = new HashMap<String, Object>(); 
    String status; 
    List<String> errors = new ArrayList<String>(); 

    ObjectMapper mapper = new ObjectMapper(); 
    result.put("status", status); 
    result.put("errors", errors); 
    StringWriter sw = new StringWriter(); 
    mapper.writeValue(sw, result); 
    return sw.toString(); 
    } 
} 

這有助於保持你的代碼的面向對象的...和你的應用程序邏輯,然後可以參考域對象,而不是操縱基本字符串。

0

我這樣做很多時間使用休眠,然後將收集的對象轉換爲json使用flexjson