Php 从JSON获取数据会导致崩溃
我尝试从JSON文件中获取单个字符串 此文件使用存储在MySql数据库中的数据 以下logcat显示了该问题:Php 从JSON获取数据会导致崩溃,php,android,mysql,json,Php,Android,Mysql,Json,我尝试从JSON文件中获取单个字符串 此文件使用存储在MySql数据库中的数据 以下logcat显示了该问题: 09-03 20:05:04.825: E/pass 1(27476): connection success 09-03 20:05:04.825: E/pass 2(27476): connection success 09-03 20:05:04.830: E/Fail 3(27476): org.json.JSONException: Value 29 of type
09-03 20:05:04.825: E/pass 1(27476): connection success
09-03 20:05:04.825: E/pass 2(27476): connection success
09-03 20:05:04.830: E/Fail 3(27476): org.json.JSONException: Value 29 of type
java.lang.String cannot be converted to JSONObject
我知道Stackoverflow的许多问题都解决了这个错误,我尝试了所有的解决方案:
> try
{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://myserver/msqlup.php");
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
Log.e("pass 1", "connection success ");
}
catch(Exception e)
{
Log.e("Fail 1", e.toString());
Toast.makeText(getApplicationContext(), "Invalid IP Address",
Toast.LENGTH_LONG).show();
}
try
{
BufferedReader reader = new BufferedReader
(new InputStreamReader(is,"utf-8"),8);
StringBuilder sb = new StringBuilder();
while ((line = reader.readLine()) != null)
{
sb.append(line + "\n");
}
is.close();
result = sb.toString();
Log.e("pass 2", "connection success ");
}
catch(Exception e)
{
Log.e("Fail 2", e.toString());
}
try
{
JSONObject json_data = new JSONObject(result);
String name=(json_data.getString("$new"));
Toast.makeText(getBaseContext(), "Name : "+name,
Toast.LENGTH_SHORT).show();
}
catch(Exception e)
{
Log.e("Fail 3", e.toString());
}
}
msqlup.php
<?php
$host='localhost';
$uname='myname';
$pwd='mypw';
$db="mydb";
$con = mysql_connect($host,$uname,$pwd) or die("connection failed");
mysql_select_db($db,$con) or die("db selection failed");
$r=mysql_query("SELECT Coins from table WHERE new= 1234567");
$abfrage = "
SELECT
Coins
FROM
lunation";
$ergebnis = mysql_query($abfrage) OR die(mysql_error());
while($zeile = mysql_fetch_assoc($ergebnis)){
$new=$zeile["Coins"];
}
print(json_encode($new));
?>
这就是我想要做的:
1.从数据库“表”中获取“硬币”的值
2.使用字符串将其保存到Android活动中
非常感谢您的任何建议(:您的
结果
变量似乎不是有效的JSONObject
,因为它只包含字符串
“29”
在PHPjson\u encode
中,只对对象和数组有效,因此我会将$new
变量添加到对象或数组中,然后在Android客户端上,创建新JSONObject(result)
或新JSONArray(result)
根据您选择的数据结构进行json\u编码
更改
$new=$zeile["Coins"];
到
然后,在java中,要阅读本文,您需要:
String name = json_data.getString("Coins");
还要确保收到的响应是
“Coins”:“29”
而不是“Coins”:29
在java代码中打印出结果
,然后看看你有什么奇怪的地方。好的,Logcat显示“29”,这正是它应该的样子..更改Log.e(“Fail 3”,e.toString())
forLog.e(“result:,result”);
对不起,这是“29”,但左引号有另一种风格,右引号o.0这本教程很糟糕。没有一个参数是参数,而且它充满了。mysql\u query
是一个过时的接口,不应该在新的应用程序中使用,并且将在未来的PHP版本中删除。这是一个现代的替代品,就像。如果您对PHP不熟悉e like可以帮助解释最佳实践。谢谢,你让我开心;)$zeile实际上是一个php对象,这就是它工作的原因:)
String name = json_data.getString("Coins");