猿问

Json、Java、解析(如何只获取一部分 json

我需要接收以下 Json 的“提取”部分:https ://en.wikipedia.org/w/api.php ? format = json & action = query & prop = extracts & exintro & explaintext & redirects =1& titles = turkey


使用我当前的代码,我收到了整个 Json 并且不知道如何继续:


public class MainActivity extends AppCompatActivity {

private Button btnSendRequest;

private TextView tvText;

private RequestQueue mRequestQueue;

private StringRequest stringRequest;

private JsonObjectRequest jsonObjectRequest;

private String url = "https://de.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro&explaintext&redirects=1&titles=ilmenau";


@Override

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    btnSendRequest = (Button) findViewById(R.id.btnSendRequest);

    tvText = (TextView) findViewById(R.id.tvText);


    btnSendRequest.setOnClickListener(new View.OnClickListener() {

        @Override

        public void onClick(View view) {

            //send request and print the response using volley library

            sendRequestAndPrintResponse();

        }

    });

}

private void sendRequestAndPrintResponse() {


    mRequestQueue = Volley.newRequestQueue(this);


    JsonObjectRequest jsonObjectRequest = new JsonObjectRequest

            (Request.Method.GET, url, null, new Response.Listener<JSONObject>() {

        @Override

        public void onResponse(JSONObject response) {

            tvText.setText("Response : " + response.toString());

          //  Log.i(TAG,"Response : " + response.toString());

        }

    }, new Response.ErrorListener() {

        @Override

        public void onErrorResponse(VolleyError error) {


            tvText.setText("Error : " + error.toString());

            //Log.i(TAG,"Error : " + error.toString());

        }

    });

    mRequestQueue.add(jsonObjectRequest);

}

}


所以目前我正在获取整个 Json,但我只需要获取 Json 的“提取”部分。谁能帮我?


森林海
浏览 620回答 3
3回答

慕妹3146593

试试这个try {&nbsp; &nbsp; JSONObject jsonObject = new JSONObject(response.toString());&nbsp; &nbsp; Iterator < String > keys = jsonObject.keys();&nbsp; &nbsp; while (keys.hasNext()) {&nbsp; &nbsp; &nbsp; &nbsp; String key = keys.next();&nbsp; &nbsp; &nbsp; &nbsp; String value = jsonObject.getString(key);&nbsp; &nbsp; &nbsp; &nbsp; Log.v("key", key);&nbsp; &nbsp; &nbsp; &nbsp; Log.v("value", value);&nbsp; &nbsp; &nbsp; &nbsp; if (key.equals("query")) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; JSONObject jsonObject1 = new JSONObject(jsonObject.getString(key));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Iterator < String > keysinner = jsonObject1.keys();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; while (keysinner.hasNext()) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; String key1 = keysinner.next();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; String value1 = jsonObject1.getString(key1);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Log.e("key1", key1);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Log.e("value1", value1);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (key1.equals("pages")) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; JSONObject jsonObject2 = new JSONObject(jsonObject1.getString(key1));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Iterator < String > keyPagenumber = jsonObject2.keys();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; while (keyPagenumber.hasNext()) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; String keyPageNumber = keyPagenumber.next();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; String valuePagenumber = jsonObject2.getString(keyPageNumber);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Log.e("Pages key&nbsp; &nbsp;:", keyPageNumber);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Log.e("Pages value :", valuePagenumber);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (key1.equals("pages")) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; JSONObject jsonObjectPages = new JSONObject(jsonObject2.getString(keyPageNumber));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Iterator < String > keyPages = jsonObjectPages.keys();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; while (keyPages.hasNext()) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; String keyPageDetail = keyPages.next();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; String valuePageDetail = jsonObjectPages.getString(keyPageDetail);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Log.e("PagesDetail key&nbsp; &nbsp;:", keyPageDetail);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Log.e("PagesDetail value :", valuePageDetail);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }} catch (Exception e) {&nbsp; &nbsp; e.printStackTrace();}输出

三国纷争

要提取一块 JSON 对象(另一个 JSON 对象、整数、字符串等),您不必使用任何外部库,如 GSON。您可以使用以下代码管理它。&nbsp;&nbsp;&nbsp;JSONObject&nbsp;jObj&nbsp;=&nbsp;new&nbsp;JSONObject(response);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;String&nbsp;InterestString&nbsp;=&nbsp;jObj.getJSONObject("local").getString("interests");

千巷猫影

就像是JSONObject pages = response.getJSONObject("query").getJSONObject("pages");JSONObject firstPage = pages.getJSONObject(pages.names().get(0));String extract = firstPage.getString("extract");应该管用。
随时随地看视频慕课网APP

相关分类

Java
我要回答