由sql行组成的PHP数组,用于json_编码
我在将sql查询生成的php数组转换为json_encode的JSONObject时遇到问题。我用谷歌截击来实现连接 当涉及到单行结果时,我没有收到任何问题,但当有超过1行时,我的应用程序中出现错误,这意味着我没有真正收到JSONObject 这是我的php代码由sql行组成的PHP数组,用于json_编码,php,mysql,arrays,json,mysqli,Php,Mysql,Arrays,Json,Mysqli,我在将sql查询生成的php数组转换为json_encode的JSONObject时遇到问题。我用谷歌截击来实现连接 当涉及到单行结果时,我没有收到任何问题,但当有超过1行时,我的应用程序中出现错误,这意味着我没有真正收到JSONObject 这是我的php代码 if (mysql_num_rows($result) > 0) { $rutina = array(); while($row = mysql_fetch_assoc($result)) { $rutina[] = $
if (mysql_num_rows($result) > 0) {
$rutina = array();
while($row = mysql_fetch_assoc($result))
{
$rutina[] = $row;
}}
我这样还它
echo json_encode($rutina);
我知道mysql已经被弃用了,我很快就要迁移到mysql了
将sql行数组转换为JSONObject的正确方法是什么
编辑:
下面是我等待JSONObject的android代码:
JsonObjectRequest solicitudRutina = new JsonObjectRequest(
Request.Method.POST, //metodo de solicitud
linkrutina, //url, se cambia en las variables
map,//el objeto JSON que contiene el usuario que intentaremos descargar
new Response.Listener<JSONObject>() { //el listener de la respuesta
@Override
public void onResponse(JSONObject response) { // si existe respuesta aca se cacha,
String temp= response.optString("sinexito");//sinexito tiene el mensaje de error de no encontrar el usuario
if(temp.equals("")){//si la rutina existe, iniciamos descarga
rutinaview.setText(response.toString());
//obtenerRutina(response);
}
else{
Context context = getApplicationContext();
CharSequence text = "Problema al descargar la rutina, posiblemente no exita una asignada";
int duration = Toast.LENGTH_LONG;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
{
Context context = getApplicationContext();
CharSequence text = "Error con la base de datos.";
int duration = Toast.LENGTH_LONG;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
}
});
VolleyApplication.getsInstance().getmRequestQueue().add(solicitudRutina);
JsonObjectRequest requestudrutina=新的JsonObjectRequest(
Request.Method.POST,//metodo de requestud
linkrutina,//url,东南坎比亚
映射,//el objeto JSON que contiene el usuario que intentaremos descargar
新的Response.Listener(){//el Listener de la respuesta
@凌驾
公共无效响应(JSONObject响应){//si existe respuesta aca se cacha,
String temp=response.optString(“sinexito”);//sinexito tiene el mensaje de error de no encontrar el usuario
如果(温度等于(“”){//si la rutina存在,则说明
rutinaview.setText(response.toString());
//obtenerRutina(应答);
}
否则{
Context=getApplicationContext();
CharSequence text=“问题描述,可能没有出口”;
int duration=Toast.LENGTH\u LONG;
Toast Toast=Toast.makeText(上下文、文本、持续时间);
toast.show();
}
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
{
Context=getApplicationContext();
CharSequence text=“基准数据出错。”;
int duration=Toast.LENGTH\u LONG;
Toast Toast=Toast.makeText(上下文、文本、持续时间);
toast.show();
}
}
});
截击应用程序.getsInstance().getmRequestQueue().add(requestudrutina);
我收到了关于响应错误的祝酒词。我想这是因为我没有得到一个JSONObject?它只适用于1行。通常我使用类似的方法来成功解析JSON对象,需要非常清楚地说明页面标题必须将JSON作为MIME类型,以便任何其他代码都可以轻松识别它
<?php
header('Content-Type:application/json');
//Your Database query here...
$output = mysqli_fetch_all($rutina,MYSQLI_ASSOC);
echo json_encode($output);
显示json编码数据的其他代码在哪里?这是什么错误?您的代码将生成一个json数组(可能是一个对象文本数组)[{…},{…},…},]
。如果您想要一个json对象作为最顶层的元素,那么您必须使用不同于0,1,2,3,。。。为了$rutina@aldrin27代码在一个android应用程序中,该应用程序请求一个JSONObject,但我会编辑我的初始任务,请稍候。当您使用json_encode时。它将返回一个json字符串,所以当它通过android时,将json转换成一个对象