【发布时间】:2017-01-04 01:23:23
【问题描述】:
所以我正在制作一个搜索 mediawiki api 以获取有关某些名人的简短信息的 Android 应用程序。
这个想法是您可以输入任何名称,它会提供 mediawiki api 关于该名称/人的信息,但现在我只是坚持使用一个名称,直到我弄清楚如何正确解析 JSON。
我需要从这个 json 响应中提取字段: JSON response
这是我目前所拥有的,我认为问题出在 Query 类中,我只是不知道该类需要什么来确保只返回提取字段。当我运行程序时,onResponse() 方法的输出为空。感谢您的帮助。
好的,我做了建议的更改,这是我更新的代码:
;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.util.Map;
public class game extends AppCompatActivity {
private static final String ENDPOINT = "https://en.wikipedia.org/w/api.php? format=json&action=query&prop=extracts&exintro=&explaintext=&titles=Harry%20Potter";
private RequestQueue requestQueue;
private Gson gson;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_game);
requestQueue = Volley.newRequestQueue(this);
GsonBuilder gsonBuilder = new GsonBuilder();
gson = gsonBuilder.create();
}
public void fetchPerson(View view)
{
fetchPosts();
}
private void fetchPosts() {
StringRequest request = new StringRequest(Request.Method.GET, ENDPOINT, onPostsLoaded, onPostsError);
requestQueue.add(request);
}
private final Response.Listener<String> onPostsLoaded = new Response.Listener<String>() {
@Override
public void onResponse(String response) {
final TextView text = (TextView) findViewById(R.id.textView);
Page page = gson.fromJson(response, Page.class);
text.setText(page.extract);
}
};
private final Response.ErrorListener onPostsError = new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("PostActivity", error.toString());
}
};
public class Root {
String batchcomplete;
Query query;
}
public class Query {
Map<String, Page> pages;
}
public class Page {
int pageid;
int ns;
String title;
String extract;
}
}
【问题讨论】:
-
什么不起作用?也发布您的日志
-
代码完全运行,日志中没有错误,问题是我没有为 JSON 数据中的每个对象设置类。我进行了 Andreas 建议的更改,并更新了上面的代码,但是我仍然没有做正确的事情,onResponse 的输出仍然是 NULL