4

私は3つの列( id(integer) 、 startdate(text) 、 enddate(text) 、)を持つようなデータベースを持っています。これらの列のすべてのエントリを読み取り、それらを Json に変換して Web URL に送信したいと考えています。値を読み取る方法は知っていますが、これらの値から Json を作成する方法は知りませんでした。コーディングの助けをください...

4

4 に答える 4

3

JSONオブジェクトを作成する方法は次のとおりです。

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

次の手順でJSONを文字列として取得することもできます。

jsonObject.toString();
于 2012-08-01T08:20:57.193 に答える
3

試してみませんか:
`

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

次に、http ポスト経由で 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 db から取得したすべてのトリプレットを含む 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 は、DB 内のフィールドの対応する名前です。
今は自分のコードをテストできませんが、うまくいくと思います

于 2012-08-01T08:29:05.360 に答える
0
    JSONObject json = new JSONObject();
    json.put("id", id);
    json.put("startdate", startdate);
    json.put("enddate", enddate);
于 2012-08-01T08:24:24.557 に答える
0

jacksonライブラリを使用すると、マップまたは 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);
    }
}
于 2012-08-01T08:41:49.763 に答える