我是java编程的新手。我想让Instagram用户全名。以下是我的代码
package gibs.smith.testapp;
import android.os.AsyncTask;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
public class fetchData extends AsyncTask<Void,Void,Void> {
private String name = "";
private String link ="";
@Override
protected Void doInBackground(Void... voids) {
try {
URL url= new URL("https://instagram.com/priya.p.varrier/?__a=1");
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
InputStream inputStream = httpURLConnection.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String line = "";
while (line !=null){
line =bufferedReader.readLine();
JSONObject jo= new JSONObject(line);
JSONObject user=jo.getJSONObject("user");
name=user.getString("full_name");
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
MainActivity.data.setText(this.name);
}
}
但它不起作用。它不会提取字符串值&#34; full_name&#34;。
它正在检索JSON
文件,但不是所需的值。
网址为https://instagram.com/priya.p.varrier/?__a=1
任何帮助都会很棒。
---- -----编辑 添加graphql对象导致应用程序崩溃,下面是catlog输出 这是日志 https://justpaste.it/1itsa
答案 0 :(得分:1)
首先是bug。它必须是NullPointerException。
while (line !=null)
它将一直运行直到line = null。然后这一行会给你例外。
new JSONObject(line);
然后你首先得到 graphql 。
所以解决方案应该是这样的。
if(line != null) {
JSONObject jo = new JSONObject(line);
JSONObject graphql = jo.getJSONObject("graphql");
JSONObject user = graphql.getJSONObject("user");
name = user.getString("full_name");
}
答案 1 :(得分:0)
根据您的JSON
您的full_name
密钥位于user
JSONObject内,位于graphql
JSONObject内。
因此,要获取full_name值,必须首先检索graphql
JSONObject。
JSONObject jo = new JSONObject(line);
JSONObject graphqlObj = jo.getJSONObject("graphql");
JSONObject user = jographqlObj.getJSONObject("user");
name=user.getString("full_name");
您可以使用http://jsonviewer.stack.hu/检查文件的JSON结构。