为了账号安全,请及时绑定邮箱和手机立即绑定

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();

}

输出

//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 关注
  • 619 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信