gpt4 book ai didi

php - 无法从 android 中的 php 获取 Json?

转载 作者:行者123 更新时间:2023-11-29 00:37:04 25 4
gpt4 key购买 nike

我得到这个 Logcat:

08-14 11:42:55.923: W/System.err(1137): org.json.JSONException: Value {"error":0,"success":0,"tag":"helloworld"} of type org.json.JSONObject cannot be converted to JSONArray

如何解决这个问题?

08-14 11:42:55.923: W/System.err(1137):     at org.json.JSON.typeMismatch(JSON.java:111)

我使用的代码是:

public class MainActivity extends Activity {

TextView tv;
HttpClient client;
JSONObject json;
final static String URL = "http://192.168.1.9/sumit/hello.php";
//final static String URL = "http://json.org/example.html";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

tv = (TextView) findViewById(R.id.tv1);
client = new DefaultHttpClient();

Log.e("my","check");
new Read().execute("tag");
// StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
// .detectAll().penaltyLog().build();
// StrictMode.setThreadPolicy(policy);

}

public JSONObject myData() throws ClientProtocolException, IOException,
JSONException {

StringBuilder url = new StringBuilder(URL);
HttpGet get = new HttpGet(url.toString());
HttpResponse r = client.execute(get);
int status = r.getStatusLine().getStatusCode();
if (status == 200) {
HttpEntity e = r.getEntity();
String data = EntityUtils.toString(e);
JSONArray datastream = new JSONArray(data);
JSONObject message = datastream.getJSONObject(0);
return message;
} else {
Toast.makeText(MainActivity.this, "error encountered",
Toast.LENGTH_SHORT).show();
return null;
}

}

class Read extends AsyncTask<String, Integer, String> {

@Override
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
try {
json = myData();

return json.getString(params[0]);



} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return null;
}

@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
tv.setText(result);

}

}

}

生成的 JSON 代码:

{"tag":"hello","success":0,"error":0}

用于生成的代码:

<?php


// response Array
$response = array("tag" => helloworld, "success" => 0, "error" => 0);


echo json_encode($response);


?>

最佳答案

因为你得到的不是 JSONArray - 它是 JSONObject

在您的案例中,JSONArray 将如下所示:

[{"error":0,"success":0,"tag":"helloworld"}]

它是一个只有一个元素的数组(JSONObject,其中包含字段)。

我不太了解 php(我也不知道 json_encode 是如何工作的),但是试试这个:

<?
$response = array(array("tag" => helloworld, "success" => 0, "error" => 0));
echo json_encode($response);
?>

关于php - 无法从 android 中的 php 获取 Json?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11948864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com