JSONException:找不到JSONObject

时间:2016-10-23 03:27:41

标签: java json

所以我写了一个连接到API端点的程序,它给了我一个字典,其中包含一个日期和添加到该日期的秒数:

[ “{\” 邮戳\ “:\” 2016-11-22T20:46:38Z \ “\ ”间隔\“:209836}”]

我想将这些秒添加到日期并将其返回到API。字典中的getDate()工作正常但我的getSeconds()抛出了

JSONException:JSONObject [“{\”datestamp \“:\”2016-11-22T20:46:38Z \“,\”interval \“:209836}”]未找到。< / p>

这是我的getSeconds():

private static String getSeconds(String retrievedJson) throws JSONException, IOException {

    JSONObject jsonTime = new JSONObject(retrievedJson);
    String interval = jsonTime.getString("interval"); <-- if I do it this way I get this exception org.json.JSONException: JSONObject["interval"] not a string.
    String interval = jsonTime.getJSONObject(retrievedJson).getString("interval"); <--- and if I do it this way it get the JSONException: JSONObject not found exception
    return interval;      
    }

以下是我如何称呼它。

public void request() throws JSONException, IOException {

    String retrievedJson = receiveInfo();
            if (retrievedJson != null){
                String finalTime = getFinalTime(retrievedJson);
                sendNewDateBack(finalTime);
            }

这是我的getFinalTime():

private static String getFinalTime(String retrievedJson) throws   JSONException, IOException {
    String gotDateStamp = getDate(retrievedJson);
    String gotInterval = getSeconds(retrievedJson);

    String finalTime = addSecondsToDate(gotDateStamp, gotInterval);
    return finalTime;

}

我整天都在处理这个异常,似乎无法弄明白。

1 个答案:

答案 0 :(得分:0)

在这里,你去:

package com.so;

import org.json.JSONException;
import org.json.JSONObject;

public class JsonParsing {

    /**
     * @param args
     * @throws JSONException 
     */
    public static void main(String[] args) throws JSONException {

        String retrievedJson= "{\"datestamp\":\"2016-11-22T20:46:38Z\",\"interval\":209836}";
        JSONObject jsonTime = new JSONObject(retrievedJson);
        Long interval = jsonTime.getLong("interval");
        System.out.println("Main Json Data : " + interval);

        String retrievedJson2 = "{\"datestamp\":\"2016-11-22T20:46:38Z\",\"interval\":209836,inner:{\"datestamp\":\"2016-11-22T20:46:38Z\",\"interval\":209837}}";
        JSONObject jsonTime2 = new JSONObject(retrievedJson2);
        String interval2 = jsonTime2.getJSONObject("inner").getString("interval");
        System.out.println("Inner Json Data : "+ interval2);
        //String interval1 = jsonTime. //<--- and if I do it this way it get the JSONException: JSONObject not found exception


    }

}

注意:

getJSONObject方法返回一个内部Json对象。在您的情况下,interval只是一个Long变量而不是Json对象。我已经使用嵌套的Json创建了一个示例Json对象,并演示了getJSONObject的使用。

我希望,它会给你一些见解。