通过Android中的php从Json检索数据? [英] Retrieve data from Json through php in android?

查看:84
本文介绍了通过Android中的php从Json检索数据?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在Json中拥有以下数据,我该如何从该文件中检索数据

I have the following data in Json how could I retrieve data from this file

{"first_name":"immi","last_name":"Ahmad","contact_no":"0333333","dob":"2010-09-29","gender":"Male","pro_id":"3"}

我还使用http请求从android访问此文件.我想获取每个字段并将其存储在android.local变量中.我尝试了以下操作,但没有成功.

also i m using http request to acces this file from android.i want to get every field and store it in a local variable in android.i tried the following but in vain.

 JSONObject json_data = new JSONObject(result);
            json_data.getJSONObject("userinfo");
            json_data.getString("first_name");

这是我的android完整课程

this is my android complete class

public class ProfileActivity extends ActionBarActivity {

   //data for through http request
   static InputStream is = null;
    String result = "flag";
    String line = null;
    int userId;
    String action="select";
    String workTable="user";

    ArrayList<HashMap<String, String>> personList;

    //till here for through http request

    @Override

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_profile);


        userId = ((GlobalValues) this.getApplication()).getUserId();

        Toast.makeText(ProfileActivity.this, "user id is"+userId, Toast.LENGTH_SHORT).show();

       select();




        //for retrieval oncreate

    }
    public void select() {


        final ArrayList<HashMap<String, String>> personList;
        personList = new ArrayList<HashMap<String, String>>();

        ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();

         nameValuePairs.add(new BasicNameValuePair("action", action));
        nameValuePairs.add(new BasicNameValuePair("worktable",workTable));
        nameValuePairs.add(new BasicNameValuePair("user_id",String.valueOf(userId)));



        try {
            HttpClient httpclient = new DefaultHttpClient();

            HttpPost httppost = new HttpPost("http......");
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            HttpResponse response = httpclient.execute(httppost);
            HttpEntity entity = response.getEntity();
            is = entity.getContent();
            Log.e("pass 1", "connection success ");
        } catch (Exception e) {
            Log.e("Fail 1", e.toString());
            Toast.makeText(getApplicationContext(), "Invalid IP Address",
                    Toast.LENGTH_LONG).show();
        }

        try {
            BufferedReader reader = new BufferedReader
                    (new InputStreamReader(is, "iso-8859-1"), 8);
            StringBuilder sb = new StringBuilder();
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
            is.close();
            result = sb.toString();
            Log.e("pass 2", "connection success ");
        } catch (Exception e) {
            Log.e("Fail 2", e.toString());
        }

        try {
              JSONObject userinfo= new JSONObject(result);

        String fname=  userinfo.getString("first_name");
        Toast.makeText(ProfileActivity.this, "name is"+fname, Toast.LENGTH_SHORT).show();

            String fname=  userinfo.getString("first_name");
            Toast.makeText(ProfileActivity.this, "name is"+fname, Toast.LENGTH_SHORT).show();
           // JSONArray peoples = json_data.getJSONArray("userinfo");


           /* for (int i = 0; i < peoples.length(); i++) {

                JSONObject c = peoples.getJSONObject(i);
                String first_name = null, last_name = null, gender = null,contact_number=null,dob=null,profession_id=null;
                first_name = c.getString("first_name");
                last_name = c.getString("last_name");
                contact_number = c.getString("contact_no");
                dob=c.getString("dob");
                gender=c.getString("gender");
                profession_id=c.getString("pro_id");

                final HashMap<String, String> persons = new HashMap<String, String>();
                persons.put("firstName", first_name);
                persons.put("last_name", last_name);
                persons.put("contact_number", contact_number);
                persons.put("gender", gender);
                persons.put("dob", dob);
                persons.put("pro_id", profession_id);
                personList.add(persons);
                Toast.makeText(ProfileActivity.this, "your name is "+first_name, Toast.LENGTH_SHORT).show();

            }*/
        }catch (Exception e){
            Log.e("fil 3",e.toString());
        }
    }


    @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_profile, 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
        item.getItemId();
        switch (item.getItemId()) {
            case R.id.action_settings:
                goToHome();
                return true;



            default:
                return super.onOptionsItemSelected(item);
        }


    }

    public void goToHome(){

        Intent gotohome =new Intent(this,MapsActivity.class);
        startActivity(gotohome);
    }

    public void  goToEditProfile(View view){


        Intent gotoeditprofile=new Intent(this,TabedActivity.class);


        startActivity(gotoeditprofile);

    }

}

这是我的php语句,它如上所述返回json

and this is my php statment which returns json as above

$user_id= $_GET['user_id']; 
        $sqlselectuser="SELECT first_name,last_name,contact_no,dob,gender,pro_id FROM user WHERE user_id='$user_id'";           
    $ansuser=mysqli_query($con,$sqlselectuser);
                  $resuser=mysqli_fetch_assoc($ansuser);
            if($resuser['dob']=="0000-00-00"){
                $userinfo = array("first_name"=>$resuser['first_name'],"last_name"=>$resuser['last_name'],
                "contact_no"=>$resuser['contact_no'],"dob"=>date("Y-m-d"),"gender"=>$resuser['gender'],
                "pro_id"=>$resuser['pro_id']);
              echo json_encode($userinfo);

推荐答案

如果您的响应比@tiny阳光方法大,则不起作用

if your responce is to big than @tiny sunlight method not work

你不能喜欢

     JSONObject userinfo= new JSONObject(result);
     userinfo.getString("first_name");
     JSONObject someObject = userinfo.getJsonObject("somthing")
     JSONObject somthingElse =   someObject.getJsonObject("somthingElse")

太忙了,几乎浪费了您的时间

That become too hectic and nearly wasting your time

所以最佳答案是Gson Liabrary

Gson gson = new GsonBuilder().create();
Movie movie = gson.fromJson(response, Movie.class);

听电影是您从json映射的类-在下面的链接中显示

hear movie is class that you map from json - show in below link

您也可以做visa-varsa

you can do vise-varsa also

Gson gson = new GsonBuilder().create();
Responce mResponce = gson.fromJson(jsonStr , Responce .class);
String mName =mResponce.result.name;

https://stackoverflow.com/a/41218155/4741746

希望您会了解哪个答案最好

Hope you will understand which answer is best

这篇关于通过Android中的php从Json检索数据?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆