在PHP中使用JSON将数据发送到Android

时间:2014-04-21 09:18:31

标签: php android json

我不确定我在PHP中使用的JSON代码是否正确将数据发送到我的Android应用程序。我的Android应用程序正常运行没有任何错误。我正在使用Async Task使用JSON从服务器检索信息。

这是我在Android应用中用来从服务器获取信息的代码:

JSONArray arr = new JSONArray(result);
JSONObject jObj = arr.getJSONObject(0);
myoutput = jObj.getString("stringpval");

我没有显示整个代码,但我确信所有其他代码都能正常工作。

以下是用于在PHP中创建JSON数组的PHP脚本:

$a = array(
array('stringpval' => "My Value"));
print $json = json_encode($a);

所以我已经完成了json的编码。我希望我在Android中的TextView显示“我的价值”!现在,当我运行我的Android应用程序并尝试从服务器获取信息时,我的TextView变为空白。这是空的!有什么问题?任何方案?上面的代码是否正确使用?

2 个答案:

答案 0 :(得分:0)

原因是json_encode($ a);实际上是在返回一个JSONObject,而不仅仅是你正在思考的JSONArray。

您当前正在打印的内容如下所示:

{
    {
        'stringpval' = "My Value"
    }
}

我不确定你为什么要使用双数组传回这样的单个值,所以现在我将你的PHP文件更改为:

$a = array('stringpval' => "My Value");
print $json = json_encode($a);

将返回:

{
    'stringpval' = "My Value"
}

然后您可以通过以下方式访问Java:

JSONObject jObj = new JSONObject(result);
myoutput = jObj.getString("stringpval");

答案 1 :(得分:0)

json通常有两种形式,对象或数组,这非常重要,因为你必须知道从服务器(json数组或json对象?)检索哪些值,因此以正确的方式解析它们客户方。 JsonArray通常都是这样的 { "jsonarray_example": [ { "id": "1", "name": "android", "description": "android 4.4.3 kitkat", "updated_at": "0000-00-00 00:00:00" } , { "id": "2", "name": "android", "description": "android 4.1 jellybin", "updated_at": "0000-00-00 00:00:00" } ] } 开始和结束[]标记数组,而{}括号标记数组的对象,名为jsonarray_example,但括号不必像现在这样,如果你的php页面输出类似的东西,那么你可以检索数组,否则你必须检索android中的对象JsonObject 所以从你上面的问题,你试图检索jsonObjects,而你的响应是数组,你应该使用类似的东西 JsonArray result = new JsonArray() ; JsonObject obj = //access the server files result = obj.getJsonArray("stringpval") ; // proceed extracting individual content from the response

有关此问题的更多信息,请LINK,此ONE可能非常有用