2012-12-06 70 views
2

从Jira Atlassian API拉动信息,我曾与其他代码工作,它工作正常,我将其更改为json和所有信息返回作为对象。stdClass类的对象无法转换为字符串PHP问题

然而,在这种情况下,我得到这个服务器错误: PHP开捕致命错误:类stdClass的客体不能在/usr/local/vhosts/999/webspace/httpdocs/mysite/filters1.php上转换为字符串线411

现在,这里是代码我尝试运行:

$username = '[email protected]'; 
$password = 'xxxxxxx'; 

$url = 'xxx.atlassian.net/rest/api/2/search?jql=project+%3D+bug+AND+component+%3D+%22issues%22+AND+status+in+(Open,+Reopened)'; 


$headers = array(
'Accept: application/json', 
'Content-Type: application/json' 
); 


$ch = curl_init(); 
$test = "This is the content of the custom field."; 

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_VERBOSE, 1); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET"); 
//curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password"); 


$result = curl_exec($ch); 
$issue_json = json_decode($result); 
$ch_error = curl_error($ch); 

if ($ch_error) { 
    echo "cURL Error: $ch_error"; 
} else { 
    echo $issue_json; 
} 

curl_close($ch); 

正如我所说,返回上述错误,但如果我改变代码

$result = curl_exec($ch); 
//$issue_json = json_decode($result); 

然后我回应$结果它的工作原理,并返回我需要的一切,但作为一个巨大的字符串,而不是像我想要的对象。我将下面的整个字符串格式化,使其更具可读性。 我GOOGLE了一些类似的问题,我想我需要做的是这样的:

foreach($string as $strings) 
{ 
    echo $strings; 
} 

但我不太熟悉这种东西只是基本的PHP所以我是一个有点失落

{"expand": 
       "names,schema", 
       "startAt":0, 
       "maxResults":50, 
       "total":1, 
       "issues": 
         [{"expand": 
         "editmeta, 
         renderedFields, 
         transitions, 
         changelog, 
         operations", 
         "id":"15550", 
         "self":"https://testing.atlassian.net/rest/api/2/issue/15550", 
         "key":"bug-4990", 
         "fields":{"progress":{"progress":0,"total":0}, 
         "summary":"Player Summary group profile bar chart does not show all ranges", 
         "issuetype":{"self":"https://testing.atlassian.net/rest/api/2/issuetype/1", 
         "id":"1", 
         "description":"A problem which impairs or prevents the functions of the product.", 
         "iconUrl":"http://www.google.com/images/bug_16.png", 
         "name":"Bug", 
         "subtask":false}, 
         "votes":{"self":"https://testing.atlassian.net/rest/api/2/issue/bug-4990/votes", 
         "votes":0, 
         "hasVoted":false}, 
         "customfield_11100":"579", 
         "resolution":null, 
         "fixVersions": 
           [{"self":"https://testing.atlassian.net/rest/api/2/version/10301", 
           "id":"10301", 
           "description":"Bugs that will be going in the next official release once the current release is pushed, held temporarily here in the meantime", 
           "name":"Milestone 1", 
           "archived":false, 
           "released":false}], 
         "customfield_10403":{ 
              "self":"https://testing.atlassian.net/rest/api/2/customFieldOption/10105", 
              "value":"Low","id":"10105"}, 
              "resolutiondate":null, 
              "customfield_11101":null, 
              "timespent":null, 
              "reporter":{ 
                 "self":"https://testing.atlassian.net/rest/api/2/user?username=donalduck%4moo.ca", 
                 "name":"[email protected]", 
                 "emailAddress":"[email protected]", 
                 "avatarUrls":{ 
                    "16x16":"https://testing.atlassian.net/secure/useravatar?size=small&avatarId=10122", 
                    "48x48":"https://testing.atlassian.net/secure/useravatar?avatarId=10122"}, 
                    "displayName":"Bugs Bunny", 
                    "active":true}, 
         "customfield_10203":null, 
         "customfield_10205":[{ 
              "self":"https://testing.atlassian.net/rest/api/2/user?username=donaldduck%40gmail.com", 
              "name":"[email protected]", 
              "emailAddress":"[email protected]", 
              "avatarUrls":{ 
                 "16x16":"https://testing.atlassian.net/secure/useravatar?size=small&ownerId=donaldduck%40gmail.com&avatarId=10202", 
                 "48x48":"https://testing.atlassian.net/secure/useravatar?ownerId=donaldduckgmail.com&avatarId=10202"}, 
                 "displayName":"Donald Duck","active":true},{ 
              "self":"https://testing.atlassian.net/rest/api/2/user?username=daffyduck%40holdemmanager.net", 
              "name":"[email protected]", 
              "emailAddress":"[email protected]", 
              "avatarUrls":{ 
                 "16x16":"https://testing.atlassian.net/secure/useravatar?size=small&ownerId=daffduck%4testing.net&avatarId=10809", 
                 "48x48":"https://testing.atlassian.net/secure/useravatar?ownerId=daffyduck%40testing.net&avatarId=10809"}, 
                 "displayName":"Daffy Duck","active":true},{ 
              "self":"https://testing.atlassian.net/rest/api/2/user?username=wazzy%40gmail.com", 
              "name":"[email protected]", 
              "emailAddress":"[email protected]", 
              "avatarUrls":{ 
                 "16x16":"https://testing.atlassian.net/secure/useravatar?size=small&ownerId=wazzy%40gmail.com&avatarId=10204", 
                 "48x48":"https://testing.atlassian.net/secure/useravatar?ownerId=wazzy%40gmail.com&avatarId=10204"}, 
                 "displayName":"wazzy", 
                 "active":true}, 
              {"self":"https://testing.atlassian.net/rest/api/2/user?username=joey%40gmail.com", 
              "name":"[email protected]", 
              "emailAddress":"[email protected]", 
              "avatarUrls":{ 
                 "16x16":"https://testing.atlassian.net/secure/useravatar?size=small&avatarId=10122", 
                 "48x48":"https://testing.atlassian.net/secure/useravatar?avatarId=10122"}, 
                 "displayName":"Bugs Bunny", 
                 "active":true}, 
              {"self":"https://testing.atlassian.net/rest/api/2/user?username=moocowgmail.com", 
              "name":"[email protected]", 
              "emailAddress":"[email protected]", 
              "avatarUrls":{ 
                 "16x16":"https://testing.atlassian.net/secure/useravatar?size=small&ownerId=moocow40gmail.com&avatarId=10808", 
                 "48x48":"https://testing.atlassian.net/secure/useravatar?ownerId=moocow%40gmail.com&avatarId=10808"}, 
                 "displayName":"Moo Cow","active":true}], 
              "updated":"2012-09-10T14:25:45.000-0600","created":"2012-05-24T13:47:03.000-0600", 
         "customfield_11001":null, 
         "description":"v158 See attached pic. everything is wrong.", 
         "priority":{ 
              "self":"https://testing.atlassian.net/rest/api/2/priority/11", 
              "iconUrl":"http://dl.dropbox.com/no4.gif", 
              "name":"4 - Low Priority","id":"11"}, 
              "customfield_11000":null, 
              "issuelinks":[], 
              "watches":{ 
                "self":"https://testing.atlassian.net/rest/api/2/issue/bug-4990/watchers", 
                "watchCount":6, 
                "isWatching":true}, 
         "customfield_10600":null, 
         "status":{"self":"https://testing.atlassian.net/rest/api/2/status/1", 
         "description":"The issue is open and ready for the assignee to start work on it.", 
         "iconUrl":"https://testing.atlassian.net/images/icons/status_open.gif", 
         "name":"Open","id":"1"}, 
         "labels":[], 
         "workratio":-1, 
         "assignee":{ 
              "self":"https://testing.atlassian.net/rest/api/2/user?username=igloo", 
              "name":"igloo", 
              "emailAddress":"[email protected]", 
              "avatarUrls":{ 
                 "16x16":"https://testing.atlassian.net/secure/useravatar?size=small&ownerId=igloo&avatarId=10800", 
                 "48x48":"https://testing.atlassian.net/secure/useravatar?ownerId=igloo&avatarId=10800"}, 
                 "displayName":"Igloo", 
                 "active":true}, 
         "customfield_10202":null, 
         "customfield_10200":null, 
         "customfield_10501":null, 
         "customfield_10500":null, 
         "project":{ 
              "self":"https://testing.atlassian.net/rest/api/2/project/HM", 
              "id":"10000", 
              "key":"bug", 
              "name":"Bugging out", 
              "avatarUrls":{ 
                 "16x16":"https://testing.atlassian.net/secure/projectavatar?size=small&pid=10000&avatarId=10200", 
                 "48x48":"https://testing.atlassian.net/secure/projectavatar?pid=10000&avatarId=10200"}}, 
         "customfield_10805":null, 
         "customfield_10700":null, 
         "customfield_10400":null, 
         "customfield_11200":null, 
         "timeestimate":null, 
         "customfield_11201":"Not Started", 
         "lastViewed":null, 
         "customfield_10800":null, 
         "components":[{ 
              "self":"https://testing.atlassian.net/rest/api/2/component/10018","id":"10018", 
              "name":"Graphs"},{ 
                  "self":"https://testing.atlassian.net/rest/api/2/component/10200","id":"10200", 
                  "name":"Hybrid Issues","description":"Issues with graphs"},{ 
                    "self":"https://testing.atlassian.net/rest/api/2/component/10011","id":"10011", 
                    "name":"Curoers"}], 
         "customfield_10803":null, 
         "timeoriginalestimate":null, 
         "customfield_10804":null, 
         "customfield_10801":null, 
         "customfield_10900":{"self":"https://testing.atlassian.net/rest/api/2/customFieldOption/10201", 
         "value":"No", 
         "id":"10201"}, 
         "customfield_10802":null}}]} 
+0

你呼应解码JSON对象,呼应'$ result'会给你,这是解码的字符串从。 – Crisp

回答

6

的函数json_decode不返回字符串。

查看该函数的文档。

http://fr2.php.net/function.json-decode.php

的问题是,你想呼应的对象。以下代码有问题。

echo $issue_json; 

您可以使用var_dump来查看从json_decode返回的对象的结构。

var_dump($issue_json); 
+0

谢谢你做的伎俩,我想因为我不能回应$ issue_json我wouldnt能够访问这样的事情: $ issue_json->问题[0] - >自我 但是,这确实工作正常,这是主要我想做的事情,但var_dump有助于使代码更容易阅读,当im搜索的东西,欣赏快速和有益的回应 – user1547410

0

要回答这个问题的标题,如果你的对象没有使用它作为一个字符串,将抛出一个异常__string方法。 (我想在这5.2改变),这样做对你所需要的跳unexploding字符串转换:

if (is_object($arg)) {             
     $arg = method_exists($arg, '__toString') ? (string)$arg : 'Object'; 
    }                  
相关问题