如何在php中解析带有数组的JSON字符串

如何在php中解析带有数组的JSON字符串

问题描述:

I am sending a JSON string in php post request. JSON string look like this:

{"mobile":"0000000000","otp":"970996", "items":[{"pid":"12", "vid":"20"},{"pid":"13", "vid":"2"}]}

At server side i want to get mobile, otp and pid and vid for all items.

I am getting mobile number from this:

$data = json_decode(file_get_contents('php://input'), true);
//print_r($data);
echo $data["mobile"];

But when i am trying to get pid and vid like this:

foreach($data["items"] as $mydata){

     echo $mydata->pid;
}

i am getting error: Trying to get property of non-object.

How to solve this?

Edit:

If there is any better way to parse JSON in php, please suggest that also.

我在php post请求中发送一个JSON字符串。 JSON字符串如下所示: p>

  {“mobile”:“0000000000”,“otp”:“970996”,“items”:[{“pid”:“12”  ,“vid”:“20”},{“pid”:“13”,“vid”:“2”}}} 
  code>  pre> 
 
 

在服务器端i 想要获得所有项目的移动,otp和pid以及vid。 p>

我从中获取手机号码: p>

  $ data =  json_decode(file_get_contents('php:// input'),true); 
 // print_r($ data); 
echo $ data [“mobile”]; 
  code>  pre> 
 
  

但是当我想要像这样获得pid和vid时: p>

  foreach($ data [“items”]为$ mydata){
 
 echo $  mydata-> pid; 
} 
  code>  pre> 
 
 

我收到错误:尝试获取非对象的属性。 p>

如何解决这个问题? p>

编辑: p>

如果有更好的方法来解析php中的JSON,请同时提出建议。 p > div>

Just access pid with:

$mydata['pid']

You pass true as a second argument for json_decode

When TRUE, returned objects will be converted into associative arrays.

So you have to treat is as an array, not an object.