ich versuche, von einer URL ein einfaches JSON-Objekt zu erhalten (nicht Array, nur {} s), und ich bin immer zwei Fehler:Jackson + volley - TypeReference ist abstrakt
Error:(43, 81) error: TypeReference is abstract; cannot be instantiated
Error:(36, 16) error: no suitable constructor found for JsonObjectRequest(String,<anonymous Listener<JSONObject>>,<anonymous ErrorListener>)
constructor JsonObjectRequest.JsonObjectRequest(String,JSONObject,Listener<JSONObject>,ErrorListener) is not applicable (actual and formal argument lists differ in length)
constructor JsonObjectRequest.JsonObjectRequest(int,String,JSONObject,Listener<JSONObject>,ErrorListener) is not applicable (actual and formal argument lists differ in length)
dies mein OnCreate Code:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_details);
String url = getResources().getString(R.string.json_url);
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(GetJsonObject(url));
}
und das ist meine JsonObject Methode:
@NonNull
private JsonObjectRequest GetJsonObject(String url) {
return new JsonObjectRequest(url, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
if (response.length() > 0) {
Details results = mapper.readValue(response.toString(), new TypeReference<Details>());
String a = response.toString();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getApplicationContext(), getResources().getString(R.string.no_internet), Toast.LENGTH_LONG).show();
}
});
}
ich verstehe nicht, die Fehler, vor allem der TypeReference einer , da ich einen anderen Code (witn jsonarray) habe, der einfach so zu sein scheint.
Vielen Dank im Voraus!
Sie mischen Jackson JSONObject und Android eingebauten in JSONObject, es ist wie –
Secondary Problem sieht ... Das ist, wie Sie ein Jackson JSON-Objekt 'Mapper lesen .readValue (Antwort, Details.class) ' –
Danke für die Antworten! ich habe den readvalue geändert, wie Sie sagen, und alle jsonobjects sind die von android eingebauten – emboole