如何创建Json对象

4

我有一个数据库,其中有三列(id(整数), startdate(文本), enddate(文本)). 我想读取这些列的所有条目,将它们转换为Json格式并发送到Web URL。 我知道如何读取这些值,但不知道如何从这些值中生成Json。 请帮我编写相关代码...

4个回答

3

以下是如何创建一个 JSON 对象:

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

您还可以通过以下方式获取JSON字符串:

jsonObject.toString();

这是文档 ;) - xiaowl
当我循环运行你的代码时,它会为第二个条目创建新的Json对象吗...? - user1567965
创建一个JSONArray对象并将每个对象插入其中 - Uriel Frankel

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是数据库中对应字段的名称。
我目前无法测试我的代码,但我相信它可以正常工作。


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

0
使用jackson库,您可以将一个map或Java bean转换为JSON字符串,或从JSON字符串生成一个map或Java bean。您可以编写一个工具类:
 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);
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接