亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

森林海 2021-07-21 21:54:02
我需要接收以下 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";@Overrideprotected 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 的“提取”部分。誰能幫我?
查看完整描述

3 回答

?
慕妹3146593

TA貢獻1820條經驗 獲得超9個贊

試試這個


try {

    JSONObject jsonObject = new JSONObject(response.toString());

    Iterator < String > keys = jsonObject.keys();


    while (keys.hasNext()) {


        String key = keys.next();

        String value = jsonObject.getString(key);


        Log.v("key", key);

        Log.v("value", value);


        if (key.equals("query")) {

            JSONObject jsonObject1 = new JSONObject(jsonObject.getString(key));

            Iterator < String > keysinner = jsonObject1.keys();


            while (keysinner.hasNext()) {

                String key1 = keysinner.next();

                String value1 = jsonObject1.getString(key1);


                Log.e("key1", key1);

                Log.e("value1", value1);


                if (key1.equals("pages")) {

                    JSONObject jsonObject2 = new JSONObject(jsonObject1.getString(key1));

                    Iterator < String > keyPagenumber = jsonObject2.keys();


                    while (keyPagenumber.hasNext()) {


                        String keyPageNumber = keyPagenumber.next();

                        String valuePagenumber = jsonObject2.getString(keyPageNumber);


                        Log.e("Pages key   :", keyPageNumber);

                        Log.e("Pages value :", valuePagenumber);


                        if (key1.equals("pages")) {

                            JSONObject jsonObjectPages = new JSONObject(jsonObject2.getString(keyPageNumber));

                            Iterator < String > keyPages = jsonObjectPages.keys();


                            while (keyPages.hasNext()) {

                                String keyPageDetail = keyPages.next();

                                String valuePageDetail = jsonObjectPages.getString(keyPageDetail);


                                Log.e("PagesDetail key   :", keyPageDetail);

                                Log.e("PagesDetail value :", valuePageDetail);


                            }

                        }

                    }

                }

            }

        }

    }

} catch (Exception e) {

    e.printStackTrace();

}

輸出

http://img1.sycdn.imooc.com//610262f40001c44112170194.jpg

查看完整回答
反對 回復 2021-07-29
?
三國紛爭

TA貢獻1804條經驗 獲得超7個贊

要提取一塊 JSON 對象(另一個 JSON 對象、整數、字符串等),您不必使用任何外部庫,如 GSON。您可以使用以下代碼管理它。

   JSONObject jObj = new JSONObject(response);                     
   String InterestString = jObj.getJSONObject("local").getString("interests");


查看完整回答
反對 回復 2021-07-29
?
千巷貓影

TA貢獻1829條經驗 獲得超7個贊

就像是


JSONObject pages = response.getJSONObject("query").getJSONObject("pages");

JSONObject firstPage = pages.getJSONObject(pages.names().get(0));

String extract = firstPage.getString("extract");

應該管用。


查看完整回答
反對 回復 2021-07-29
  • 3 回答
  • 0 關注
  • 678 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號