ajax json.stringify请求从字符串转换为元素php

时间:2014-04-06 21:12:37

标签: php jquery ajax json

我有这个问题,我的Ajax JSON.stringify的一部分像文本一样到达,而另一部分就像数组元素一样,我的问题是如何将所有数据转换为数组并提取元素值,这里是代码I&#39 ;我在我的PHP脚本中接收:

    array (size=3)
    'JSON' => string '  {
    "requestType":"TourListRequest",
    "data":{
    "ApiKey":"12345",
    "ResellerId":"1000",
    "SupplierId":"1004",
    "ExternalReference":"10051374722994001",
    "Timestamp":"2013-12-10T13:30:54.616+10:00",
    "Extension":{
     "any":{
    }
   },
    "Parameter":{
    "Name":{
      "0":" "
     },
    "Value":{
    }
    }
   }
  }
   ' (length=412)
   'URL' => string 'api_test_json.php?test=JSON Tour List' (length=37)
   'Type' => string 'JSON Tour List' (length=14)

我的问题:如何获取" requestType"," ApiKey"," ResellerId"等的值作为PHP变量?

这是我生成AJAX CALL的代码:

<textarea style="width: 100%; height: 300px;" id="request_json">
{
    "requestType":"TourListRequest",
    "data":{
    "ApiKey":"12345",
    "ResellerId":"900",
    "SupplierId":"904",
    "ExternalReference":"10051374722994001",
    "Timestamp":"2013-12-10T13:30:54.616+10:00",
    "Extension":{
     "any":{
      }
     },
     "Parameter":{
     "Name":{
     "0":" "
      },
      "Value":{

      }
     }
    }
   }

 <script>
 function SubmitAPI(){
var sendInfo = { JSON: $('#request_json').val(),
    URL: $('#supplier_api_endpoint_JSON_Tour_List').val(),
Type: 'JSON Tour List' };
       $('#response_json').html("Calling API...");
   $.ajax({
    url: "post_JSON.php",
        data: {data: JSON.stringify(sendInfo)},
    dataType: 'html',   
    type: "POST",
    cache: false,
    success: function(data){
      console.log(data)
      $('#response_json').html(data);
      }
    });
      }
     </script>

提前谢谢你......

1 个答案:

答案 0 :(得分:0)

您只需要解码JSON并从结果对象数据中访问变量。

$array = ...; // the array you dump in your example
$obj = json_decode($array['JSON']);
// request type information
$request_type = $obj->requestType;
// here is all the stuff in 'data'
$data = $obj->data;
// now access your data variables like
echo $data->ApiKey;
echo $data->ResellerId;
// and so on...

json_decode()步骤完成了大部分工作。 JSON只是对象和/或数组数据的序列化方法。通过json_decode()对其进行反序列化后,您可以直接访问序列化为JSON的任何数据结构,就像使用任何普通的数字索引数组或stdClass对象(PHP的默认对象类型)一样。

请注意,在使用此函数时,您经常会将true作为第二个参数传递。这会将JSON对象结构转换为关联数组而不是stdClass个对象。我个人很少使用它,因为很多时候,对象结构{}中的项目应该更多地被视为PHP中的对象而不是更像地图的关联数组。尽管如此,在PHP中工作的人通常会出于某种原因倾向于使用关联数组,因此您将在示例中看到很多(例如json_decode($json, true)