【问题标题】:Using GET method with JSON Array使用带有 JSON 数组的 GET 方法
【发布时间】:2013-09-12 02:11:16
【问题描述】:

我目前有一个服务器 API 来接收带有 JSON 数据的 POST。 JSON数据如下

JSON 对象如下

[{
          firstName : "XXXXX",
          surName   : "XXXXXX",
          contact   : "XXXXXXX",
          branch    : "XXXXXX",
          reportsTo : "XXXXX",
          startTime : "9:00AM",
          endTime   : "6:00PM"},
  {
          firstName : "XXXXXX",
          surName   : "XXXXXXX",
          contact   : "XXXXXXX",
          branch    : "XXXXXXX",
          reportsTo : "XXXXXXX",
          startTime : "9:00AM",
          endTime   : "6:00PM"
}];

现在我需要更改代码以支持 GET 获取相同的 JSON 数据。 JSON 对象包含多个 json 对象。 Array 中有两个元素如下所示。

APP_ID=XXXXXXXf&client=XXXXXXXXXX&Details=%7B%22firstName%22:%22XXXXXXX%22,%22surName%22:%22lXXXXXXX%22,%22contact%22:%22XXXXXXX%22,%22branch%22:%22XXXXXXX%22,%22reportsTo%22:%22XXXXXXX%22,%22startTime%22:%229:00AM%22,%22endTime%22:%226:00PM%22%7D&professionalDetails=%7B%22firstName%22:%22XXXXXXX%22,%22surName%22:%22XXXXXXX%22,%22contact%22:%22XXXXXXX%22,%22branch%22:%22XXXXXXX%22,%22reportsTo%22:%22XXXXXXX%22,%22startTime%22:%229:00AM%22,%22endTime%22:%226:00PM%22%7D&timeStamp=1378950760

  1. GET 是一种可用于此类情况的方法吗?

  2. 任何有效的方法来提取数据而无需太多的字符串操作?

【问题讨论】:

  • 查询字符串的长度是有限制的。我相信紧随其后的是最受欢迎的网络服务器。因此,使用 get 方法,您将更加受限于可以通过的数据量

标签: php json get


【解决方案1】:

您可以使用 GET,但限制为大约 2000 个字符(请参阅 here

使用json_decode()。你找到doc on php.net

【讨论】:

    【解决方案2】:

    我不是专业人士。 但我会做的是。

    将所有 $_POST 更改为 $_REQUEST

    然后做这个

    if(isset($_GET['firstName']))
    {
     foreach($_RESQUEST as $k => $v)
     {
      $_RESQUEST[$k] = url_decode($v);
     }
    }
    

    【讨论】:

      【解决方案3】:

      如果 JSON 数组太大,你会发现 GET 会失败,而太大并不是很大。 POST 是去这里的方式。

      一旦你的 PHP 脚本中有数据,你就可以用它来解码它

      $myData = json_decode($_POST['myData']);
      

      之后您可以将其作为 PHP 变量访问:

      $firstFirstName = $myData[0]->firstName;
      

      【讨论】:

      • 感谢更新。我已经设置了这个 POST 代码。我的同事需要 GET 中的代码,以便将他的 iOS 代码集成到其中。
      • 您是说您的同事是在请求数据,而不是发送数据?如果是这样,这在您的问题中并不清楚,我的回答也不中肯。
      • 同事对从他的应用程序发送 POST 数据感到困惑。所以他要求设置GET数据,这样他就可以使用GET数据,他对编程很熟悉
      • 他不应该使用 GET 来发送数据。 1) 它违反了 HTTP 1.1 规范中规定的约定; 2)一遍又一遍地点击按钮并重复发送相同的数据太容易了; 3) 究竟什么服务器将接受作为 URL 和查询字符串因服务器而异 - 预计 413 或 414 错误迟早会发生。
      【解决方案4】:

      您可以在同一代码中使用 get 方法而不是 post.. json 解析将采用相同的方式.. 而不是 $_POST['josn_str'] 您需要使用 $_GET['json_str']

      那么我认为您已经在使用 json_decode

      只有使用 GET 才能通过一次调用在 API 中获得更少的数据。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-12-01
        • 2012-07-17
        • 1970-01-01
        • 1970-01-01
        • 2017-08-06
        • 1970-01-01
        • 1970-01-01
        • 2015-06-30
        相关资源
        最近更新 更多