试图从JSON向PHP返回数据。下面是我的PHP脚本试图从JSON返回PHP数据到Android .....
<?php
#
print(json_encode("[name=john]"));
#
?>
但我正在逐渐Java中的错误:错误/ log_tag(907):错误的数据进行解析org.json.JSONException:一个JSONArray文本必须以“[”在字符0
试图从JSON向PHP返回数据。下面是我的PHP脚本试图从JSON返回PHP数据到Android .....
<?php
#
print(json_encode("[name=john]"));
#
?>
但我正在逐渐Java中的错误:错误/ log_tag(907):错误的数据进行解析org.json.JSONException:一个JSONArray文本必须以“[”在字符0
json_encode
需要一个实际的对象或数组来编码成json格式。另外,设置响应头的内容类型也是很好的做法。试试这个:
<?php
header('Content-type: application/json');
print json_encode(array('name' => 'john'));
?>
我对Java方面不太了解。如nikc所述,json_encode将关联数组更改为json对象和数组数组。
我仍然收到此错误:09-07 07:12:28.309:ERROR/log_tag(907):解析数据时出错org.json.JSONException:JSONArray文本必须以字符1处的[[' {“name”:“john”} – SJS
当转换为JSON时,关联数组自然会被编码为对象而不是数组。 –
@SJS答案在你的回复中......将其解析为JSON对象而不是JSON数组。 –
你正在用json_encode编码一个json数组。在json [](方括号)中代表数组和{}(curley括号)代表对象。使用[enobrev]给出的样本,返回一个json对象而不是json数组。
你在这种情况下,解决办法是在android系统调用
//Example of the content of result:
// {"name":"john"} This would be the result returned from the restfull request
// This the above JSON would be stored in a variable of type String.
JSONObject obj = new JSONObject(result); //JSONObject's constructor accepts a string as parameter
当你有对象,你就可以写:
obj.getString("name");
这将检索,其中的关键是“值名称“
其使用示例可以是:
Toast.makeText(context, obj.getString("name"), Toast.LENGTH_LONG).show();
它返回约翰。
因为你得到的错误意味着你正试图从json对象中创建一个json数组。
我仍然收到此错误:09-07 07:12:28.309:ERROR/log_tag(907):解析数据时出错org.json.JSONException:JSONArray文本必须以{['位于{“名称的字符1 “:”john“} – SJS