因此,我正在制作一个android应用程序,搜索mediawiki api,以获取有关某些名人的简短信息。
我们的想法是,您可以输入任何名称,它将提供mediawikiapi关于该名称/人员的信息,但目前我只使用一个名称,直到我找到正确解析json的方法。
我需要这个json响应的extract字段:json响应
这就是我目前的情况,我认为问题出在query类中,我只是不知道该类需要什么来确保只返回extract字段。当我运行这个程序时,onresponse()方法的输出就是null。谢谢你的帮助。
好的,我做了建议的更改,这是我的更新代码:
;
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;
}
}
1条答案
按热度按时间k5hmc34c1#
我认为问题出在我们的范围之内
Query
班你说得对。
json数据如下所示:
根对象有2个字段:
batchcomplete
以及query
.尝试使用以下字段解析对象:
extract
以及title
.你看到不一致了吗?
如果您想使用gson,您需要为所有对象提供类。
更新
您需要将json解析为
Root
对象。示例代码:
输出