Ayrıştırıcınız iyi. Sağladığınız kod snippet'i aldığınız özel durum yığın izine aitse, ayrıştırmaya çalıştığınız JSON öğesinin response
özelliğinin bir dize dışında bir değere sahip olduğuna inanıyorum. Örneğin,
{ "response": "ok" }
gayet senin çözümleyici tarafından çözümlenebilir. Ayrıca
Exception in thread "main" java.lang.IllegalStateException: Expected a string but was BEGIN_OBJECT at line 1 column 16 path $.response
gibi bir şeyle başarısız olması
{ "response": {"status": "ok"} }
GSON sorunlu yeri raporlarında dikkat: Ancak, ayrıştırıcı ile alabilirsiniz yakın istisna mesajı JSON aşağıdakine benzer En son sürümlerinde (Gson 2.5 ile test ettim). Sadece beklenen girişi aldığınızdan emin olun. Yanıtın bahsettiğiniz formatta olması gerektiğine inanıyorsanız, sadece giriş akışını izlemeyi ve farklılıkları bulmayı deneyin. En basit fakat en verimli uygulanmasında bir giriş akışı izleme ve böyle bir miktar daha verimli izleme okuyucu olabilir:
private static Reader traceReader(final Reader reader) {
return new Reader() {
@Override
public int read(final char[] buffer, final int offset, final int length)
throws IOException {
final int read = reader.read(buffer, offset, length);
if (read != -1) {
// or any other appropriate tracing output here
out.print(new String(buffer, offset, read));
out.flush();
}
return read;
}
@Override
public void close()
throws IOException {
reader.close();
}
};
}
ile:
JsonReader reader = new JsonReader(traceReader(new InputStreamReader(in, "UTF-8")))
Sonra sadece eğer tekrar kontrol { "response": "ok" }
'u gerçekten alıyoruz.
Böyle bir şey için 'gson 'kütüphanesinin kullanılması şiddetle tavsiye edilir .... boilerplate kod tonunu kaldırır ve daha az hata eğilimli. –
JsonReader, Gson kütüphanenizde – student
https://github.com/google/gson ..... adresinde olup, özellikle Java POJO'larınızı özel kod kullanmak yerine json'a eşlemek için kullanılır. –