我在这里阅读了几篇帖子,并且无法找到解决我遇到的问题的成功。
我试图找出如何从UploadImage数组中获取NAME字段。
我从Webhook向我传递了以下JSON。
{
"$version":5,
"Entry":{
"Number":"11",
"Order":null,
"Origin":
{
"City":"Portland",
"CountryCode":"US",
}
,
"Message":"the message",
"UploadImage":[
{
"ContentType":"image/png",
"Id":"F-lMbiCYdwiYS8ppkQS4gsyE",
"Name":"Screen.png",
"Size":55907
}
],
"Subject":"here is the subject"
}
抓取Subject或Message的值没有问题,但我无法弄清楚如何在UploadImage中抓取NAME。
$contact = json_decode($json);
$subject=$contact->{'Subject'};
当我这样做时
$uploadimage=$contact->{'UploadImage'};
它只是写出了ARRAY。
我能做到
echo $contact->{'Entry'}->{'Number'};
并且它有效,所以它必须是括号在大括号之前存在的东西。我知道这必须是我想念的简单事物。 非常感谢任何帮助。
答案 0 :(得分:1)
首先尝试
$contact = json_decode($json, true);
添加第二个参数会返回一个数组而不是一个对象,这会使事情变得更容易。带数字键的对象很麻烦......现在你可以,
print_r($contact);
准确了解您的情况。我想象中
echo $contact['UploadImage'][0]['Name'];
会得到你想要的东西。
请注意UploadImage
包含一个对象数组(或转换后的数组数组)。
答案 1 :(得分:1)
$uploadimage=$contact->{'UploadImage'}[0]->{'Name'};
答案 2 :(得分:1)
另一种解决方案是:
$contact = json_decode($text);
$name = '';
foreach($contact->UploadImage as $k=>$v){
foreach($v as $k2=>$v2){
echo $k2.' - '.$v2.'<br />';
if($k2=='Name'){ $name = $v2;}
}
};
var_dump($name);
//响应
ContentType - image/png
Id - F-lMbiCYdwiYS8ppkQS4gsyE
Name - Screen.png
Size - 55907
//name
string 'Screen.png' (length=10)
答案 3 :(得分:0)
您是否尝试使用如下所示:
$uploadimage=$contact->UploadImage[0]->Name;
答案 4 :(得分:0)
在JSON中,方括号[]标记数组部分,花括号{}标记对象。在您的JSON字符串中,UploadImage是一个包含单个对象的数组。
答案 5 :(得分:-2)
尝试更改您的JSON,如下所示:
func captureOutput(captureOutput: AVCaptureOutput!, didOutputSampleBuffer sampleBuffer: CMSampleBuffer!, fromConnection connection: AVCaptureConnection!) {
externalVideoBufferDelegate?.captureOutput!(captureOutput, didOutputSampleBuffer: sampleBuffer, fromConnection: connection)
dispatch_async(videoQueue) {
if self.assetWriterVideoInput.readyForMoreMediaData {
self.assetWriterVideoInput.appendSampleBuffer(sampleBuffer)
}
}
}