0

私が持っている巨大な文字列の情報にアクセスする簡単な方法があるかどうか疑問に思っています。文字列は構造化されており、人々がレビューする目的で改行とスペースを入れていますが、これは返されるテキストの 1 つの巨大な 1 行にすぎません。

まず、これは私が Jira API にアクセスする方法です:

$username = 'xxx';
$password = 'xxx';

$url = 'https://xxx.atlassian.net/rest/api/2/Issue/Bug-5555';

$curl = curl_init();
curl_setopt($curl, CURLOPT_USERPWD, "$username:$password");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);

$issue_list = (curl_exec($curl));
echo $issue_list;

これで、分解すると次のような巨大な文字列が返されます。

{"expand":
"renderedFields,names,schema,transitions,operations,editmeta,changelog",
"id":"16935",
"self":"https://xxx.atlassian.net/rest/api/2/issue/16935",
"key":"xx-5555",
"fields":
        {"summary":"Dialog boxes shouldn't be on top.",
        "progress":
                    {"progress":0,
                    "total":0
                    },
        "timetracking":{},
        "issuetype":
                        {"self":"https://xxx.atlassian.net/rest/api/2/issuetype/1",
                    "id":"1",
                    "description":"A problem which impairs or prevents the functions of the product.",
                    "iconUrl":"https://xxx.atlassian.net/images/icons/bug.gif",
                    "name":"Bug",
                    "subtask":false
                    },
        "timespent":null,
        "reporter":
                    {"self":"https://xxx.atlassian.net/rest/api/2/user?username=xxx%40xxx.com",
                    "name":"xxx@xx.com",
                    "emailAddress":"xxx@xxx.com",
                    "avatarUrls":{"16x16":"https://xxx.atlassian.net/secure/useravatar?size=small&avatarId=10122",
                    "48x48":"https://xxx.atlassian.net/secure/useravatar?avatarId=10122"},
                    "displayName":"xxx",
                    "active":true
                    },
        "created":"2012-08-25T18:39:27.760-0600",
        "updated":"2012-08-31T16:47:38.761-0600",
        "priority":
                    {"self":"https://xxx.atlassian.net/rest/api/2/priority/6",
                    "iconUrl":"http://dl.dropbox.com/u/xxx/3-green.png",
                    "name":"3 - Medium Priority",
                    "id":"6"
                    },
        "description":"\"loading \" dialog is always on top, so is the \"Updating database\" dialog.\r\n\r\n\r\nThis is annoying. It shouldn't be on top and/or you should be able to easily minimize the window.",
        "issuelinks":[], etc etc etc

現在、私は基本的なphpユーザーなので、可能であれば返信を単純化しておいてください。ドキュメント全体を解析するルートをたどる前に、解析に慣れていないため、簡単な方法があるかどうか疑問に思っていました。値にアクセスします。

私が考えているのは次のようなものです:

foreach($issue_list->issues as $issue) {
    echo "summary" . $issue->summary;
    echo "updated" . $issue->updated;
    echo "created" . $issue->created;
    echo "description" . $issue->description;
}

これは希望的観測かもしれませんが、私が似たようなことをした記事を見ましたが、理解できません。記事は次のとおりです 。 http://www.lornajane.net/posts/2012/using-jiras-rest-api -to-create-a-dashboard

また、可能であれば、レポーター > displayName の値にアクセスする方法は?

最後にもう 1 つの簡単な質問です。説明をエコーする場合、/r/r/r/r/r/n および /" に従うようにするにはどうすればよいので、改行して出力し、それらの特殊文字を削除しますか?

4

1 に答える 1

1

これは JSON (JavaScript Object Notation -詳細はこちら) 文字列のように見えますが、おそらくjson_decode(ドキュメントはこちら) を使用して PHP オブジェクトに変換し、簡単にインデックスを付けることができます。

私はあなたの完全な文字列を持っていませんが、おそらく次の行に沿って何かを試すことができます:

$jiraIssue = json_decode($theString);
echo $jiraIssue["id"];

さて、オブジェクトはオブジェクトの内部に含まれているため、アクセスする前におそらく通過"fields"する必要があります"summary"

s ではなく strueを処理する場合は、2 番目のパラメーターとして渡すことができます。arrayobject

于 2012-11-22T03:23:55.813 に答える