java - 在php中创建JSONArray并将其发送到android

标签 java php android json

我正在开发一个 android 项目,我需要在我的 php 服务器中创建一条 JSON 消息并将其发送到 android 设备。

我在php中编写了以下代码

$event_array = array();
// fill the event_array with some data
print json_encode(array('event_array' => $event_array));

但结果是这样的

 {
    "event_array": {
        "id_1": {
            "name": "name",
            "logo_address": "logo_address",
            "title": "title",
            "time": null,
            "address": null,
            "address_location": null,
            "explain": null,
            "type": null,
            "id": "id_1",
            "number_of_users": null
        },
        "id_2": {
            "name": "name2",
            "logo_address": null,
            "title": null,
            "time": null,
            "address": null,
            "address_location": null,
            "explain": null,
            "type": null,
            "id": "id_2",
            "number_of_users": null
        }
    }
}

它不是一个 json 数组,我在我的 android 代码中遇到异常,这只是

JSONObject jObject = new JSONObject(res);
JSONArray jArray = jObject.getJSONArray("event_array");

出了什么问题?

感谢您的帮助

最佳答案

{ 表示对象,[ 表示数组。

在你的例子中它是两个对象。

JSONObject jObject = new JSONObject(res);

是正确的并且包含另一个名为 event_array 的对象。

JSONObject jsonEvents = new JSONObject(jObject.getString("event_array"));

而 jsonEvents 现在成立

jsonEvents.getString("id_1");

这是另一个 jsonObject。

如果要以数组形式输出,请再次使用数组。

http://de3.php.net/json_encode 中所写它必须是这样的才能得到一个数组

echo json_encode(array(array('event_array' => $event_array)));

所以这意味着它应该是这样的以匹配您的情况。

 echo json_encode(
    array(
        'event_array' =>
        array(
            array("id_1" => array('name' => 'name', 'logo_...' => '...')),
            array("id_2" => array('name' => '....', 'logo_....' => '....'))
        )
 ));

用 Java 阅读这篇文章更有可能

 JSONObject json = new JSONObject(data);
 JSONArray jsonArr = json.getString('event_array');

 for (int i = 0; i <= jsonArr.length(); i++) {
    JSONObject jsonEventData = jsonArr.getJsonObject(i);
 }

关于java - 在php中创建JSONArray并将其发送到android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24730928/

相关文章:

android - 所有 com.android.support 库必须使用完全相同的版本规范。找到版本 28.0.0、26.1.0

java - 我可以在 Android View 中使用类方法吗?

java - 查找内存有限的重复元素

java - 如何实现Android Recyclerview项目点击和复选框项目点击?

java - 与 java.util.Date 和 java.sql.TimeStamp 冲突

php - 一切都出了问题 : Php - MySQL

javascript - Bootstrap 模态弹出窗口在 PHP 页面上不起作用 |控制台没有显示错误

java - 打开文件以查看其内容

php - 服务器的响应延迟超过 24 小时 - 这可能吗?

java - 删除表时出现数据库异常