JSONException: неуместный объект - PullRequest
1 голос
/ 15 ноября 2010

Это мой код:

    JSONStringer result = new JSONStringer();

    for (long i = start; i <= end; i = i + day) {
        ttm.put("$gte", "" + i);
        ttm.put("$lte", "" + (i + day));
        //code code code

        int count = statisticCollection.find(query).count();

        try {
            result.object().key("ttm").value(i).key("count").value(count);
        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    try {
        result.endObject();
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

Затем я получаю JSONException.Я также попытался создать и завершить объект с помощью другого блока try-catch, как показано ниже:

    JSONStringer result = new JSONStringer();

    try {
        result.object();
    } catch (Exception e) {
        e.printStackTrace();
    }

    for (long i = start; i <= end; i = i + day) {
        ttm.put("$gte", "" + i);
        ttm.put("$lte", "" + (i + day));

        //code code code

        long count = statisticCollection.find(query).count();

        try {
            result.key("ttm").value(i).key("count").value(count);
        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    try {
        result.endObject();
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

, а также создать и завершить JSONStringer в самом цикле for следующим образом:

JSONStringer result = new JSONStringer();

for (long i = start; i <= end; i = i + day) {
    ttm.put("$gte", "" + i);
    ttm.put("$lte", "" + (i + day));
    //code code code

    int count = statisticCollection.find(query).count();

try {
     result.object().key("ttm").value(i).key("count").value(count).endObject();
} catch (JSONException e) {
            e.printStackTrace();
  }

Что я делаю не так?

Спасибо.

1 Ответ

1 голос
/ 15 ноября 2010

Вам нужно использовать массив:

JSONStringer result = new JSONStringer();
JSONWriter array = result.array();

for (long i = start; i <= end; i = i + day) {
    ttm.put("$gte", "" + i);
    ttm.put("$lte", "" + (i + day));
    //code code code

    int count = statisticCollection.find(query).count();

    try {
        array.object().key("ttm").value(i).key("count").value(count).endObject();
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

try {
    array.endArray();
} catch (JSONException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...