gpt4 book ai didi

java - 在android中通过php检索Json数据?

转载 作者:行者123 更新时间:2023-12-02 04:13:31 25 4
gpt4 key购买 nike

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

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

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

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

这是我的 Android 完整类(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

$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);

最佳答案

如果你的 react 比@tiny sunny 方法大则不起作用

你不能这样做

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

这变得太忙碌,几乎浪费了你的时间

所以最佳答案是 Gson Liabrary

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

hear movie 是您从 json 映射的类 - 显示在下面的链接中

你也可以做 vise-varsa

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

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

希望您能理解哪个答案是最好的

关于java - 在android中通过php检索Json数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33558516/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com