如何从URL获取特定的JSON数据值?

时间:2018-05-14 18:33:56

标签: android json cloud

我无法从JSON数据中获取特定值。假设我有JSON数据,如下面的https://api.thingspeak.com/channels/494244/fields/1.json?api_key=3O8HR1YR38GCGD31&results=1。我能够看到JSON数据,但无法获得我需要的特定数据。

MainActivity

public class MainActivity extends AppCompatActivity {
public static Button click;
public static TextView data;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    click = (Button) findViewById(R.id.button);
    data=(TextView) findViewById(R.id.fetcheddata);

    click.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            fetchData process=new fetchData();
            process.execute();

fetchData类

public class fetchData extends AsyncTask<Void,Void,Void> {
String data="";
int dataParsed=0;
String singleParsed="";
String entryId="";
@Override
protected Void doInBackground(Void... voids) {
    try {
        URL url=new URL("https://api.thingspeak.com/channels/494244/fields/1.json?api_key=3O8HR1YR38GCGD31&results=2");

        HttpURLConnection httpURLConnection=(HttpURLConnection) url.openConnection();
        InputStream inputStream=httpURLConnection.getInputStream();
        BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(inputStream));
        String line="";
        while(line!=null){
            line=bufferedReader.readLine();
            data=data+line;
        }
        JSONObject object=new JSONObject(data);
        JSONObject feeds=object.getJSONObject("feeds");
        entryId = feeds.getString("entry_id");

    } 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.entryId
    );

请帮助我如何获得具体价值。例如&#34; entry_id&#34;在我提供的JSON数据链接的feeds数组中。提前致谢

1 个答案:

答案 0 :(得分:1)

嗯...... function HasDuplicateValues() { var Duplicates = false; $('#select1 option').each(function () { var $SameValue = $('#select1 option[value=' + $(this).val() + ']'); Duplicates = $SameValue.length > 2); alert('dublicates') }; }); 是一个数组,而不是一个对象。所以你需要改变:

feeds

为:

object.getJSONObject("feeds")

最后,能够获得JSONArray jsonArray = object.getJSONArray("feeds")

entry_id

您需要检查您从JSON获取的内容类型并使用相应的get方法。

修改

很抱歉,因为这是一个数组,你必须循环它......就像这样:

jsonArray.getInt("entry_id")