【问题标题】:How to do JSON parsing in Android?如何在 Android 中进行 JSON 解析?
【发布时间】:2011-06-03 11:20:50
【问题描述】:

我正在使用基于 PHP 的 Web 服务来获取 json。它工作正常。返回结果(字符串):

数组
  (
    [错误] => 0
    [响应] => 数组
        (
            [错误] => 您已成功登录。
        )

)

我不知道这之后该怎么办。我想解析它以获得响应。

下一步应该是什么?

【问题讨论】:

  • 那不是 JSON。您可以修改网络服务以返回 JSON 吗?这样,您就不必编写自己的解析器了。
  • 你好史蒂夫..但这只是我得到的回应
  • 这是 var_dump() 输出。 var_dump 是一个用于转储变量内容的函数,仅对调试有用。您必须更改 php 端,使用 json_encode 函数而不是 var_dump 或 print_r

标签: php android web-services json


【解决方案1】:

我的猜测是:

  1. 您正在使用自己的 JSON 来创建 Web 服务,
  2. 您正在使用其他人的 JSON 来制作 Web 服务,或者 3. 您正在尝试制作自己的 JSON API。

使用您自己的 JSON

你为什么要这样做?如果你坚持使用 php,一切都会变得更简单。只做饼干。如果你想使用 JSON,它仍然需要 cookie!同样的事情,但更复杂,更容易破解!


使用其他网站提供的 JSON

首先这不是 JSON。那是一个数组。如果您提供的代码已经从 json 转换为数组,让我们更改:

$string = file_get_contents("http://www.website.com/api.json"); // gets file content
$decoded=json_decode($string); // creates objects (not array... this makes it easier (for me))
$item = $decoded->item-string; // generates the string from an item's name

如果您需要多个,请重复 $item。

使用$item = $decoded->item-string->secondary-item-string; 获取项目中的项目。


创建您自己的登录 API

首先,您根本没有使用 JSON。我相信这是一个 PHP 输出数组。您可以使用 json_encode 将数组编码为 JSON。

与其让网站开发人员直接制作登录表单(我认为您正在尝试这样做),不如让他们使用您的登录系统。这样,他们就不能通过虚假登录来秘密“窃取”密码……等等。

首先制作一个名为 loginapi.php 的 php 文件。使用 htaccess 将 loginapi.php 重写为 loginapi.json (Rewrite Engine) 然后为登录表单创建一个 .html 文件,例如 loginform.html

假设你使用 $isloggedin 来检查用户是否登录:

header ('Content-type: text/javascript; charset=utf-8');

if($isloggedin == "yes"){
  $arr = array("isloggedin" => "yes", "item1" => "output1", "item2" => "output2", "item3" => "output3");
}
else {
  $arr = array("isloggedin" => "no", "html" => "<iframe src=\"http://www.yoursite.com/loginform.html\" width=\"400\" height=\"200\" style=\"border:none;\"></iframe>");
}

echo json_encode($arr);

↑ 这告诉开发人员该人是否已登录。 ↑

你也可以制作一个“api key”,这样

  1. 您可以找到所有使用您的 API 的开发人员
  2. 您可以监控/限制使用您的 API 的人

为此,您必须在数据库中为开发人员 API 密钥创建一个表。然后使用 $_GET['key'];检查是否涉及 api 密钥。然后检查数据库是否有匹配的 api 密钥。

在您接受开发者提供 API 密钥的地方,让开发者输入他们的网站 url,并使用哈希来制作密钥,例如 md5。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-10
    • 2015-10-24
    相关资源
    最近更新 更多