я использовать REST, чтобы получить ресурс URL-адрес, который возвращает строку, следующим образом:Get Rest Api не возвращает правильный формат JSON string?
URL url = new URL(some_url_string);
HttpsURLConnection connection = (HttpsURLConnection)url.openConnection();
connection.setRequestMethod("GET");
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
StringBuffer response = new StringBuffer();
String inputLine;
while ((inputLine = reader.readLine()) != null) {
response.append(inputLine);
}
reader.close();
String s = response.toString();
И я стараюсь, чтобы преобразовать его в мой класс:
MyClass temp = new Gson().fromJson(s, MyClass.class);
где MyClass является:
public class MyClass {
@SerializedName("Number")
public int number;
@SerializedName("Date")
public Long date;
}
проблема заключается в том, что response.toString()
возвращается:
"{\"Number\":2,\"Date\":1444953600}"
в то время, Gson ожидает строку:
{"Number":2,"Date":1444953600}
Поскольку response.toString()
возвращается вышеуказанную строку с дополнительным "
в начале и в конце строки, я получаю следующее исключение:
Вызванный: java.lang.IllegalStateException: ожидаемое BEGIN_OBJECT но СТРОКА в строке 1 колонка 2 путь $
на com.google.gson.stream.JsonReader.beginObject (JsonReader.java:387)
в com.google.gson.internal.bind.ReflectiveTypeAdapterFactory $ Adapter.read (ReflectiveTypeAdapterFactory.java:210)
ли проблема здесь GET
, response.toString()
или fromJson()
?
Попробуйте установить connection.setRequestProperty ("Content-Type", "приложения/JSON"); будет JsonObject js = новый JSONObject (ответ); вернет правильную строку json? –
'JsonObject js = new JSONObject (response);' не компилируется. –
Извините; Для этого вам нужен JSON lib. :) –