如何使用JSON将PHP解析为Java?

如何使用JSON将PHP解析为Java?,java,php,android,json,parsing,Java,Php,Android,Json,Parsing,我正为这件事大发雷霆。我仍然不完全理解JSON是如何工作的。我试图将一个数字(格式化为字符串)从PHP脚本返回到java。我不断得到以下错误: Error parsing data org.json.JSONException: Value http of type java.lang.String cannot be converted to JSONArray 这是PHP代码的一个片段: class result { public $value = ""; } $result =

我正为这件事大发雷霆。我仍然不完全理解JSON是如何工作的。我试图将一个数字(格式化为字符串)从PHP脚本返回到java。我不断得到以下错误:

Error parsing data org.json.JSONException: Value http of type java.lang.String cannot be converted to JSONArray
这是PHP代码的一个片段:

class result
{
    public $value = "";
}

$result = new result();
$result->value = "1";

print(json_encode($result));
这将返回: {“值”:“1”}

我正在尝试将“1”存储在字符串中,以便在android端进行错误检查

它首先插入MySQL数据库,这样可以工作,但不会正确返回值

以下是我一直尝试使用的java代码:

try 
{
     CustomHttpClient.executeHttpPost(response="http://test.com/test.php",postParameters);

     String result = response.toString();

     try
     {
          returnString = "";

          JSONArray jArray = new JSONArray(result);

          for(int i=0;i<jArray.length();i++)
          {
                 JSONObject json_data = jArray.getJSONObject(i);
                 Log.i("log_tag","value:"+json_data.getString("value"));

                 returnString = json_data.getString("value");

          }

    }

    catch(JSONException e)
    {
        Log.e("log_tag", "Error parsing data "+e.toString());
        Toast.makeText(getApplicationContext(), "Error Parsing",  Toast.LENGTH_LONG).show();                                              
    }
}
试试看
{
CustomHttpClient.executeHttpPost(响应=”http://test.com/test.php“,后参数);
字符串结果=response.toString();
尝试
{
returnString=“”;
JSONArray jArray=新JSONArray(结果);

对于(int i=0;i您的PHP代码返回一个JSON对象(包含在
{}
中),而不是数组(包含在
[]
中)。因此,您需要将JSON解析代码更改为

returnString = "";

JSONObject json_data = new JSONObject(result);
Log.i("log_tag","value:"+json_data.getString("value"));

returnString = json_data.getString("value");

由于只返回一个JSON对象,因此也不需要循环。

首先,我建议您使用这是一个处理JSON对象的惊人API。我强烈建议您阅读他们网站上的指南

这里的问题是,您试图将对象转换为数组,这就是为什么会出现异常。转换上述指定值的正确方法是:

JsonObject jObject = (JsonObject) new JsonParser().parse(value);

上面的示例使用的是Gson API,但同样适用于您的API。

您可以尝试使用此示例,这对我很有用:

public String listOfUser() {
        //User users = new User();

        String URI = "http://localhost/Perumahan/index.php/User_c";
        RestTemplate restTemplate = new RestTemplate();
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);
        List<LinkedHashMap> users = restTemplate.getForObject(URI, List.class);
        //userService.addUser(users);
        return gson.toJson(users);

    }
公共字符串listOfUser(){
//用户=新用户();
字符串URI=”http://localhost/Perumahan/index.php/User_c";
RestTemplate RestTemplate=新RestTemplate();
HttpHeaders=新的HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
List users=restemplate.getForObject(URI,List.class);
//userService.addUser(用户);
返回gson.toJson(用户);
}

您的意思是想使用php将json传递给java吗?您试图读取一个数组,但它只是一个对象。