如何使用Volley在JSON中的数组内部获取元素

时间:2018-02-10 19:46:26

标签: android json android-volley

我能够从JSON页面获取一些信息,但是我很难在元素内部获取元素。

到目前为止我的代码:

 @Override
 public void onResponse(JSONObject response) {
     try {
         String status = response.getString("status");

         if (status.equals("ok")) {
             JSONArray jsonArray = response.getJSONArray("articles");
             JSONObject jsonObject = jsonArray.getJSONObject(0);
             titleTextView.setText(jsonObject.getString("title"));
         }

     } catch (JSONException e) {
          e.printStackTrace();
     }

我收到JSON的页面是:https://newsapi.org/v2/top-headlines?q=trump&language=en&apiKey=954cfe1dd4db4f8fb19e425c12db324e

到目前为止,我的代码获取了我的第一篇文章的信息,除了名为" source"

的数组

我希望获取名为" source"的数组中的信息。命名"名称"

2 个答案:

答案 0 :(得分:1)

"source"不是JSONArray JSONObject

name对象获取source尝试此

if (status.equals("ok")) {
   JSONArray jsonArray = response.getJSONArray("articles");
   JSONObject jsonObject = jsonArray.getJSONObject(0);
   JSONObject sourceObject= jsonObject.getJSONObject("source");
   titleTextView.setText(sourceObject.getString("name"));
}

答案 1 :(得分:0)

根据https://newsapi.org/v2/top-headlines?q=trump&language=en&apiKey=954cfe1dd4db4f8fb19e425c12db324e api,source是一个对象而不是一个数组。 您可以通过解析对象并获取与其中“name”键对应的字符串值,轻松访问“source”对象中的“name”。

/*
 * A simple Account object
*/

#include <string>

class Account {
public:

Account( std::string accountName, int newBalance ) :  name(accountName) {
    if ( newBalance >= 0) {
        balance = newBalance;
    }

}

// member function that sets the name of an Account object
void setName( std::string accountName ) {
    name = accountName;
}

// member function that retrieves the name of Account object
std::string getName() const {
    return name;
}
// add amount to data member balance
void deposit( int deposit ) {
    if ( deposit >= 0 ) {
        balance = balance + deposit;
    }
}
// return the account balance
int getBalance() const {
    return balance;
}

private:
std::string name;
int balance{0}; // this is shown as valid syntax but throws an error
}; // end class Account

}