2016-10-23 4 views
0

Так что я написал программу, которая подключается к API конечной точке, которая дает мне словарь, состоящий из даты и # секунд, чтобы добавить к этой дате:JSONException: JSONObject не нашел

[ «{\» метка времени \ ": \" 2016-11-22T20: 46: 38Z \ ", \" interval \ ": 209836}"]

Я хочу добавить эти секунды к дате и вернуть ее в API. Мой GetDate() из словаря работает нормально, но мои getSeconds() бросает

JSONException: JSONObject [ "{\" метка времени \ ": \" 2016-11-22T20: 46: 38Z \ "\" интервал \ ": 209836}"] не найден.

Вот мои 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; 

} 

Я я весь день работал над этим исключением и не могу понять.

+0

Объекты Json начинаются с '{'. У вас есть массив json, который содержит только один элемент, строку, которая описывает объект json. – yshavit

ответ

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.

Надеюсь, это даст вам какое-то понимание.

Смежные вопросы