我能够从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"的数组中的信息。命名"名称"
答案 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
}