2012-12-06 72 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'; 
    }                  
相關問題