2011-09-07 43 views
4

试图从JSON向PHP返回数据。下面是我的PHP脚本试图从JSON返回PHP数据到Android .....

<?php 
# 
print(json_encode("[name=john]")); 
# 
?> 

但我正在逐渐Java中的错误:错误/ log_tag(907):错误的数据进行解析org.json.JSONException:一个JSONArray文本必须以“[”在字符0

+0

我仍然收到此错误:09-07 07:12:28.309:ERROR/log_tag(907):解析数据时出错org.json.JSONException:JSONArray文本必须以{['位于{“名称的字符1 “:”john“} – SJS

回答

5

json_encode需要一个实际的对象或数组来编码成json格式。另外,设置响应头的内容类型也是很好的做法。试试这个:

<?php 
    header('Content-type: application/json'); 
    print json_encode(array('name' => 'john')); 
?> 

我对Java方面不太了解。如nikc所述,json_encode将关联数组更改为json对象和数组数组。

+0

我仍然收到此错误:09-07 07:12:28.309:ERROR/log_tag(907):解析数据时出错org.json.JSONException:JSONArray文本必须以字符1处的[[' {“name”:“john”} – SJS

+0

当转换为JSON时,关联数组自然会被编码为对象而不是数组。 –

+0

@SJS答案在你的回复中......将其解析为JSON对象而不是JSON数组。 –

1

你正在用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数组。