如何从PHP返回JSON对象以从Android应用程序读取
我有下面的如何从PHP返回JSON对象以从Android应用程序读取,php,android,mysql,json,Php,Android,Mysql,Json,我有下面的MySQL表 我需要从android应用程序发送经销商名称,并将所有匹配行发送到该应用程序。我不知道如何设置php输出。我知道我应该使用json_encode(数组('stuff'))进行编码 但是我不知道如何格式化数据。我一直在检查它显示了一个例子 {"employees":[ {"firstName":"John", "lastName":"Doe"}, {"firstName":"Anna", "lastName":"Smith"}, {"firstN
MySQL
表
我需要从android
应用程序发送经销商名称,并将所有匹配行发送到该应用程序。我不知道如何设置php
输出。我知道我应该使用json_encode(数组('stuff'))进行编码代码>
但是我不知道如何格式化数据。我一直在检查它显示了一个例子
{"employees":[
{"firstName":"John", "lastName":"Doe"},
{"firstName":"Anna", "lastName":"Smith"},
{"firstName":"Peter", "lastName":"Jones"}
]}
我应该使用相同的格式吗?如何从android中读取此内容?我指的是
编辑:
清单
您必须使用JSONParser类。它将有助于从webBrowser获取json值。在此之后,您可以这样使用:
JSONObjcet object=getJSONObject("result");
JSONArray arr=object.getJSONArray("employees");
for(int i=0;i<arr.length;i++){
JSONObject obj1=arr.getJSONObject(i);
String firstName=obj1.getString("firstName");
String lastName=obj1.getString("lastName");
}
jsonobject=getJSONObject(“结果”);
JSONArray arr=object.getJSONArray(“员工”);
对于(inti=0;i这是一个如何使用Volley.jar(lib)解析JSON的示例
private void makeJsonArrayRequest() {
showpDialog();
JsonArrayRequest req = new JsonArrayRequest(urlJsonArry,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
Log.d(TAG, response.toString());
try {
// Parsing json array response
// loop through each json object
jsonResponse = "";
for (int i = 0; i < response.length(); i++) {
JSONObject person = (JSONObject) response
.get(i);
String name = person.getString("name");
String email = person.getString("email");
JSONObject phone = person
.getJSONObject("phone");
String home = phone.getString("home");
String mobile = phone.getString("mobile");
jsonResponse += "Name: " + name + "\n\n";
jsonResponse += "Email: " + email + "\n\n";
jsonResponse += "Home: " + home + "\n\n";
jsonResponse += "Mobile: " + mobile + "\n\n\n";
}
txtResponse.setText(jsonResponse);
} catch (JSONException e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(),
"Error: " + e.getMessage(),
Toast.LENGTH_LONG).show();
}
hidepDialog();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d(TAG, "Error: " + error.getMessage());
Toast.makeText(getApplicationContext(),
error.getMessage(), Toast.LENGTH_SHORT).show();
hidepDialog();
}
});
// Adding request to request queue
AppController.getInstance().addToRequestQueue(req);
private void makeJsonArrayRequest(){
showpDialog();
JsonArrayRequest req=新的JsonArrayRequest(urlJsonArry,
新的Response.Listener(){
@凌驾
公共void onResponse(JSONArray响应){
Log.d(TAG,response.toString());
试一试{
//解析json数组响应
//循环遍历每个json对象
jsonResponse=“”;
对于(int i=0;i
}
发件人:由于您的帖子没有提到一个可用的PHP文件,为了完整起见,我将包含它。这可能是一篇很长的帖子
因此,首先,这是一个PHP文件的示例,该文件名为my_test.PHP,存储在以下位置:c:\wamp\www\some_folder\u name\my_test.PHP
(请查看代码的编辑历史记录)
现在,让我解释一下PHP的重要部分。这些参数应该配置为使用您的设置:
$DB_HOST = 'YOUR_IP_ADDRESS';
$DB_UNAME = 'MYSQL_USERNAME';
$DB_PWD = 'MYSQL_USER'S_PASSWORD';
$DB_DATABASE = 'DATABASE_NAME';
IP地址应该是本地主机或承载MySQL数据库的计算机的IP地址。最好是IP地址,以便您可以在物理设备上进行测试。使用localhost只能在虚拟设备上工作
下一步是将列添加到数组中,该数组将在JSON响应中构造单个记录(行)
$stuff["id"] = $row['id'];
$stuff[“id”]
基本上将成为生成的JSON对象中的标记,而$row['id']
则表示数据库表中的列名。因此$row[“…”]
必须与数据库表中的列名相同。而$stuff[…”]
可以是任何东西。只要对您有意义
这一行echo(json_encode($response));
将响应转换为json格式
现在让我们看一下Java代码。首先是一个类,它将帮助您解析结果。它是从一个网站的教程中摘取的(我不记得是哪个)。只需在Java类中复制粘贴以下代码。无需更改此文件中的任何内容。请仔细阅读以了解其工作原理。我将其命名为JSONParser(请参阅代码的编辑历史记录):
最后,如何实际获取生成的JSON并在活动中解析它
/片段
我解析异步任务
中的数据,考虑到您将执行网络操作,这是必需的。(请参阅代码的编辑历史记录)
此Java中需要注意的要点:
这个字符串URL\u TO\u PHP=”http://IP_ADDRESS/some_folder_name/my_test.php“;
需要一个IP地址,如192.168.0.x,或者如果您在虚拟设备上测试,它应该是10.0.2.2。较早的(192…)在模拟器上不起作用,较晚的(10.0…)在物理设备上不起作用
在这个:String TAG_STUFF=“STUFF”
中,“STUFF”
与PHP文件中的以下内容相对应:$response[“STUFF”]=array();
。TAG_STUFF
基本上应该使用$response[“STUFF”]
中的内容
希望以上所有内容都有意义。如果需要帮助,请发表评论。;-)
使用工作解决方案更新:
这确实很奇怪。但是,我有一个有效的解决方案。当使用OP的代码时,应用程序确实崩溃了。对于
{"stuff":[{"pname":"Advocates"},{"pname":"Notaries"},{"pname":"Agriculture \/ Fertilizer"},{"pname":"Airconditioners"},{"pname":"Animation"},{"pname":"Airline Companies"},{"pname":"Aluminium Fabricators"},{"pname":"Amusement Parks"},{"pname":"Pets shop"},{"pname":"Association \/ Societies"},{"pname":"Astrology"},{"pname":"Attestation Service"},{"pname":"Auditorium"},{"pname":"Automobiles Accessories"},{"pname":"Automobile Dealers"},{"pname":"Ayurveda"},{"pname":"Gifts Articles"},{"pname":"Bags"},{"pname":"Batteries"},{"pname":"Bearings"},{"pname":"Beauty Parlours \/ Spa"},{"pname":"Magazine Dealers"},{"pname":"Building Contractors"},{"pname":"Building Materials"},{"pname":"Cameras"},{"pname":"Cast Iron Products"},{"pname":"Home Delivery"},{"pname":"Cements Wholesale \/ Retail"},{"pname":"Chemicals"},{"pname":"Contractors"},{"pname":"Consultants"},{"pname":"Parcel Services"},{"pname":"Crockery"},{"pname":"Dental Clinics"},{"pname":"Cyber Parks"},{"pname":"Dance School\/Costumes"},{"pname":"Diagnostics Labs& X-Rays"},{"pname":"Distance Education"},{"pname":"Driving Schools"},{"pname":"Dry Cleaners"},{"pname":"DTH Services"},{"pname":"DTP Centers"},{"pname":"Electrical Contractors \/ Services"},{"pname":"Electronics Equipment \/ Servicing"},{"pname":"Coaching Centre"},{"pname":"Event Management"},{"pname":"Fancy \/ Stationery"},{"pname":"Pooja stores"},{"pname":"Food Products"},{"pname":"Foot Wear"},{"pname":"Foreign Exchange"},{"pname":"Furniture shop"},{"pname":"Granites \/ Marbles"},{"pname":"Hospitals \/ Clinics"},{"pname":"Computer Accessories"},{"pname":"Kitchen Cabinets"},{"pname":"Library"},{"pname":"Lights \/ Fittings"},{"pname":"Mobile Phone Accesseries"},{"pname":"Machinery \/ Tools"},{"pname":"Timber Manufacturer"},{"pname":"Real Estate Agents"},{"pname":"Security Services"},{"pname":"Solar Products"},{"pname":"Health & Fitness"},{"pname":"Travel Agencies"},{"pname":"Used Car \/ Bikes"},{"pname":"Waste Management"},{"pname":"Watches & Clocks"},{"pname":"Handicrafts"},{"pname":"Doors & Windows"}],"success":1}
JSONObjcet object=getJSONObject("result");
JSONArray arr=object.getJSONArray("employees");
for(int i=0;i<arr.length;i++){
JSONObject obj1=arr.getJSONObject(i);
String firstName=obj1.getString("firstName");
String lastName=obj1.getString("lastName");
}
private void makeJsonArrayRequest() {
showpDialog();
JsonArrayRequest req = new JsonArrayRequest(urlJsonArry,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
Log.d(TAG, response.toString());
try {
// Parsing json array response
// loop through each json object
jsonResponse = "";
for (int i = 0; i < response.length(); i++) {
JSONObject person = (JSONObject) response
.get(i);
String name = person.getString("name");
String email = person.getString("email");
JSONObject phone = person
.getJSONObject("phone");
String home = phone.getString("home");
String mobile = phone.getString("mobile");
jsonResponse += "Name: " + name + "\n\n";
jsonResponse += "Email: " + email + "\n\n";
jsonResponse += "Home: " + home + "\n\n";
jsonResponse += "Mobile: " + mobile + "\n\n\n";
}
txtResponse.setText(jsonResponse);
} catch (JSONException e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(),
"Error: " + e.getMessage(),
Toast.LENGTH_LONG).show();
}
hidepDialog();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d(TAG, "Error: " + error.getMessage());
Toast.makeText(getApplicationContext(),
error.getMessage(), Toast.LENGTH_SHORT).show();
hidepDialog();
}
});
// Adding request to request queue
AppController.getInstance().addToRequestQueue(req);
$DB_HOST = 'YOUR_IP_ADDRESS';
$DB_UNAME = 'MYSQL_USERNAME';
$DB_PWD = 'MYSQL_USER'S_PASSWORD';
$DB_DATABASE = 'DATABASE_NAME';
$stuff["id"] = $row['id'];
class testing extends AsyncTask<Void, Void, Void> {
....
}
public class MainActivity extends Activity {
JSONParser jParser;
String URL_TO_PHP = "http://testbox.site50.net/test.php";
String TAG_SUCCESS = "success";
String TAG_STUFF = "stuff";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
....
public void onClick(View v) {
switch (v.getId()) {
case R.id.button1:
new testing().execute();
break;
default:
break;
}
}
private class testing extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... args) {
/* Building Parameters */
List<NameValuePair> params = new ArrayList<>();
/* getting JSON string from URL */
JSONObject json = jParser.makeHttpRequest(URL_TO_PHP, "GET", params);
try {
/* Checking for SUCCESS TAG */
int success = json.getInt(TAG_SUCCESS);
if (success == 1) {
JSONArray JAStuff = json.getJSONArray(TAG_STUFF);
/** CHECK THE NUMBER OF RECORDS **/
int intStuff = JAStuff.length();
if (intStuff != 0) {
for (int i = 0; i < JAStuff.length(); i++) {
JSONObject JOStuff = JAStuff.getJSONObject(i);
Log.e("ALL THE STUFF", JOStuff.toString());
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
}
}
}