Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 无法将java.lang.String类型的值转换为JSONObject_Php_Android_Json_Android Json - Fatal编程技术网

Php 无法将java.lang.String类型的值转换为JSONObject

Php 无法将java.lang.String类型的值转换为JSONObject,php,android,json,android-json,Php,Android,Json,Android Json,我尝试构建一个android应用程序,将一个参数发送到php代码作为一个where 在php代码中的查询条件,我应该在日志中获取 我得到以下错误 org.json.JSONException:无法将java.lang.String类型的值转换为JSONObject 主要活动 public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceSta

我尝试构建一个android应用程序,将一个参数发送到php代码作为一个where

在php代码中的查询条件,我应该在日志中获取

我得到以下错误

org.json.JSONException:无法将java.lang.String类型的值转换为JSONObject

主要活动

 public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        try {
            JSONObject toSend = new JSONObject();
            toSend.put("msg", "3");

            JSONTransmitter transmitter = new JSONTransmitter();
            transmitter.execute(new JSONObject[] {toSend});

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

    }

} 
JSONTransmitter类

public class JSONTransmitter extends AsyncTask<JSONObject, JSONObject, JSONObject> {

    String url = "http://192.168.1.10:89/b.php";


    protected JSONObject doInBackground(JSONObject... data) {
        JSONObject json = data[0];
        HttpClient client = new DefaultHttpClient();
        HttpConnectionParams.setConnectionTimeout(client.getParams(), 100000);
        StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().permitNetwork().build());
        JSONObject jsonResponse = null;

        HttpPost post = new HttpPost(url);
        try {
            StringEntity se = new StringEntity("json="+json.toString());
            post.addHeader("content-type", "application/x-www-form-urlencoded");
            post.setEntity(se);

            HttpResponse response;
            response = client.execute(post);
            String resFromServer = org.apache.http.util.EntityUtils.toString(response.getEntity());

            jsonResponse=new JSONObject(resFromServer);
            Log.i("Response from server", jsonResponse.getString("msg"));
            Toast.makeText(null, resFromServer, Toast.LENGTH_LONG);
        } catch (Exception e) { e.printStackTrace();}

        return jsonResponse;
    }

}
public类JSONTransmitter扩展异步任务{
字符串url=”http://192.168.1.10:89/b.php";
受保护的JSONObject doInBackground(JSONObject…数据){
JSONObject json=data[0];
HttpClient=new DefaultHttpClient();
HttpConnectionParams.setConnectionTimeout(client.getParams(),100000);
StrictMode.setThreadPolicy(新的StrictMode.ThreadPolicy.Builder().permitNetwork().build());
JSONObject jsonResponse=null;
HttpPost=新的HttpPost(url);
试一试{
StringEntity se=new StringEntity(“json=“+json.toString());
post.addHeader(“内容类型”、“应用程序/x-www-form-urlencoded”);
邮政实体(se);
HttpResponse响应;
响应=client.execute(post);
字符串resFromServer=org.apache.http.util.EntityUtils.toString(response.getEntity());
jsonResponse=新的JSONObject(resFromServer);
Log.i(“来自服务器的响应”,jsonResponse.getString(“msg”);
Toast.makeText(null,resFromServer,Toast.LENGTH\u LONG);
}catch(异常e){e.printStackTrace();}
返回jsonResponse;
}
}
php代码

<?php
 mysql_connect("localhost", "root", "password") 
or die(mysql_error());
mysql_select_db("test") or die(mysql_error());


$result = mysql_query(" select  part_name from  Services_parts where  part_id=  1 ") 
or die(mysql_error());  

$row = mysql_fetch_array( $result );


$j_out = new stdClass();
$j_out->part_name= $row['part_name'];

echo json_encode($j_out);
?>

您执行的代码相当于:

JSONObject obj = new JSONObject("john");
什么会导致异常

这意味着来自服务器的json数据格式错误。问题可能出在php代码中,因为在php+java代码下面返回json adapt中的项目数组:

$res_items = array();
for ( ... )  {
    array_push($res_items, $some_item);
}
$js_result = get_json_encode(array(
                "results" => $res_items
            ));
echo $js_result;
JSONObject jsResp = new JSONObject(serverJsonResult);
JSONArray results = jsResp.getJSONArray("results");
for (int n = 0; n < results.length(); ++n) {
   JSONObject js_row = results.getJSONObject(n);
   // ...
}
然后在java代码中:

$res_items = array();
for ( ... )  {
    array_push($res_items, $some_item);
}
$js_result = get_json_encode(array(
                "results" => $res_items
            ));
echo $js_result;
JSONObject jsResp = new JSONObject(serverJsonResult);
JSONArray results = jsResp.getJSONArray("results");
for (int n = 0; n < results.length(); ++n) {
   JSONObject js_row = results.getJSONObject(n);
   // ...
}
JSONObject jsResp=新的JSONObject(serverJsonResult);
JSONArray results=jsResp.getJSONArray(“结果”);
对于(int n=0;n
java代码中为什么可能重复将JSONObject转换为JSONArray,然后获取该数组的元素该数组的元素是什么?这只是一个元素john,请完成您的代码以进行尝试them@JEREEF我不明白您的意思,您的服务器必须返回有效的json数据,引发此异常是因为它没有返回。带有“john”的json的最简单形式类似于
{name:“john”}