gpt4 book ai didi

java - org.json.JSONException : End of input at character 0 of

转载 作者:太空宇宙 更新时间:2023-11-04 12:28:38 27 4
gpt4 key购买 nike

Volley 库中接收 JSON 数据的 JSONObjectRequest 存在一些问题。我想我在 Java 代码中接收 JSON 对象时出错了。以下是我的 JSON 输出,作为服务器上托管的 php 文件的响应:

{"workers":[
{"id":"1","name":"Raja","phonenumber":"66589952","occupation":"Plumber","location":"Salunke Vihar","rating":"4","Review":"Hard Worker","price":"80"},
{"id":"2","name":"Aman","phonenumber":"789456","occupation":"Plumber","location":"Wakad","rating":"4","Review":"Good","price":"80"}
],
"success":1}

以下是来自 Java 文件的 clode,我在其中使用 Volley 库使用 JSON 请求:

JsonObjectRequest jsonRequest = new JsonObjectRequest (Request.Method.POST, url,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
// I should receive the success value 1 here
int success = response.getInt("success");
//and should receive the workers array here
Log.d("response",response.getJSONArray("workers").toString());
Log.d("success",""+success);

} catch (JSONException e) {
e.printStackTrace();
}
Toast.makeText(getApplicationContext(), response.toString(), Toast.LENGTH_LONG).show();
recyclerView = (RecyclerView) findViewById(R.id.recyclerView);

recyclerView.setHasFixedSize(true);
layoutManager = new LinearLayoutManager(getApplicationContext());
recyclerView.setLayoutManager(layoutManager);
//Finally initializing our adapter
adapter = new WorkerAdapter(listWorkers);
recyclerView.setAdapter(adapter);
//adapter is working fine
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("error",error.toString());
Toast.makeText(getApplicationContext(),error.toString(),Toast.LENGTH_LONG).show();
}
}){
@Override
protected Map<String,String> getParams(){
Map<String,String> params = new HashMap<String, String>();
params.put("tag", "get_list");
params.put("service", service);
return params;
}

运行上面的代码,它会转到错误监听器,并给出输出 org.json.JSONException: End of input at character 0 of。但是,如果我使用 StringRequest 代替 JsonObjectRequest 并以字符串形式接收 JSON 响应,那么我可以以字符串形式接收输出,但无法进一步使用它。因此,请让我知道我在接收 JSONdata 时出错的地方,并建议我必须对代码进行更改。

编辑-我正在添加返回 JSON 对象的 php 文件。如果这里有错误,请告诉我:

<?php
error_reporting(0);
include("config.php");

if($_SERVER['REQUEST_METHOD']=='POST'){
$tag = $_POST['tag'];
// array for JSON response
$response = array();

if ($tag == 'get_list') {
// Request type is check Login
$service = $_POST['service'];

//echo json_encode($service);

// get all items from myorder table
$result = mysql_query("SELECT * FROM Workers WHERE Occupation = '$service'") or die(mysql_error());

if (mysql_num_rows($result) > 0) {

$response["workers"] = array();

while ($row = mysql_fetch_array($result)) {
// temp user array
$item = array();
$item["id"] = $row["wID"];
$item["pic"] = $row["Pic"];
$item["name"] = $row["Name"];
$item["phonenumber"] = $row["Phone Number"];
$item["occupation"] = $row["Occupation"];
$item["location"] = $row["Location"];
$item["rating"] = $row["Rating"];
$item["Review"] = $row["Review"];
$item["price"] = $row["Price"];


// push ordered items into response array
array_push($response["workers"], $item);
}
// success
$response["success"] = 1;
}
else {
// order is empty
$response["success"] = 0;
$response["message"] = "No Items Found";
}
}
echo json_encode($response);
}
?>

最佳答案

当我运行 api 端点时,我得到了以下结果,而不是您一直告诉的结果。因此,请停止提供不相关的数据。

"Plumber"{"workers":[{"id":"1","pic":"ttp:\/\/vorkal.com\/images\/vorkal_cover.PNG","name":"Raja","phonenumber":"66589952","occupation":"Plumber","location":"Salunke Vihar","rating":"4","Review":"Hard Worker. Very Professional.","price":"80"},{"id":"2","pic":"http:\/\/vorkal.com\/images\/vorkal_cover.PNG","name":"Aman","phonenumber":"789456","occupation":"Plumber","location":"Wakad","rating":"4","Review":"Good","price":"80"}],"success":1}

其中 Plumber 根本不是标签,因此会抛出错误,因为同样不是有效的 json 字符串。 您的服务器端脚本存在错误。我请求您发送未经修改的完整脚本。

如果您没有获取 JSONObject,则意味着以下内容是格式错误的 json。因此您可以在服务器端尝试以下代码

 function utf8ize($d) {
if (is_array($d)) {
foreach ($d as $k => $v) {
$d[$k] = $this->utf8ize($v);
}
} else if (is_string ($d)) {
return utf8_encode($d);
}
return $d;
}

其中$d是字符串/响应。将其用作 echo json_encode($this->utf8ize($detail));

另请在客户端代码中尝试以下操作

Gson gson = new Gson();
JsonReader reader = new JsonReader(new StringReader(result1));
reader.setLenient(true);

您可以在此处引用该问题的解决方案click here

关于java - org.json.JSONException : End of input at character 0 of,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38115071/

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