我不知道如何使用Android json解析器

时间:2016-06-18 15:52:34

标签: java android json

我是Android新手,我正在开发Android应用,我想获取JSON数据 我无法从服务器

带来我的json

这是用于解析它的代码:

package com.centre.anapa;

import android.os.Bundle;
import android.os.StrictMode;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;

import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.IOException;



public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);



    StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
            .detectAll()
            .penaltyLog()
            .penaltyDialog()
            .build());

    StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectAll()
            .penaltyLog()
            .build());

    TextView dust = (TextView) findViewById(R.id.dust);
    TextView humid = (TextView) findViewById(R.id.humid);
    TextView temp = (TextView) findViewById(R.id.temp);
    TextView tim = (TextView) findViewById(R.id.tim);

    JSONObject json = null;
    String str = "";
    HttpResponse response;
    HttpClient myClient = new DefaultHttpClient();
    HttpPost myConnection = new HttpPost("http://mase.everypython.com/get_data");

    try {
        response = myClient.execute(myConnection);
        str = EntityUtils.toString(response.getEntity(), "UTF-8");

    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

    try{
        JSONArray jArray = new JSONArray(str);
        json = jArray.getJSONObject(0);

        if (dust != null) {
            dust.setText(json.getString("dust"));
        }
        if (humid != null) {
            humid.setText(json.getString("humid"));
        }
        if (temp != null) {
            temp.setText(json.getString("temp"));
        }
        if (tim != null) {
            tim.setText(json.getString("time"));
        }

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

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}

我不知道如何使用Android json解析器。

1 个答案:

答案 0 :(得分:0)

首先尝试将字符串解析为 JsonObject 然后通过按键

来询问每个元素

实施例

public void getJson() {
    String answer = "{\"time\": \"2016-01-01 00:00:00\" , \"temp\": 20, \"humid\": 50, \"dust\": 10}";
    JSONObject reader = new JSONObject(answer);
    String time = answer.getString("time");
    String temp = answer.getInt("temp");
}