2012-08-08 40 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