Xử lý json trong php
Chào mọi người ! Tình hình là mình có đoạn json như sau :
{
"status":true,
"message":"Successfully received info.",
"site":"Youtube",
"title":"Taylor Swift - Shake It Off",
"like_count":6290433,
"dislike_count":744939,
"view_count":2234478374,
"duration":242,
"upload_date":"20140818",
"description":"Taylor\u2019s new release 1989 is Available Now featuring the hit single \u201cShake It Off\u201d and her latest single \u201cBlank Space\u201d. ",
"tags":[
"Taylor",
"Swift",
"Shake",
"It",
"Off",
"Big",
"Machine",
"Records"],
"uploader":"TaylorSwiftVEVO",
"uploader_url":"http:\/\/www.youtube.com\/user\/TaylorSwiftVEVO",
"thumbnail":"https:\/\/i.ytimg.com\/vi\/nfWlot6h_JM\/maxresdefault.jpg",
"streams":[
{
"url":"https:\/\/r6---sn-4g57knkz.googlevideo.com\/videoplayback?id=9d[...]",
"format":"audio only (DASH audio)",
"format_note":"Audio only, no video",
"extension":"m4a",
"video_codec":"none",
"audio_codec":"mp4a.40.5",
"filesize":1438229,
"height":null,
"width":null
},
{
"url":"https:\/\/r6---sn-4g57knkz.googlevideo.com\/videoplayback?key=[...]",
"format":"1920x1080 (1080p)",
"format_note":"1080p",
"extension":"webm",
"video_codec":"vp9",
"audio_codec":"none",
"filesize":68016821,
"height":1080,
"width":1920
},
{
...
}
]}
Cho mình hỏi là làm thế nào để lấy url trong đoạn json trên bằng php
2 ANSWERS
bạn có thể chỉ rõ hơn k?
@sgorki sau khi bạn dùng hàm json_decode, dữ liệu của bạn sẽ thành
array:15 [
"status" => true
"message" => "Successfully received info."
"site" => "Youtube"
"title" => "Taylor Swift - Shake It Off"
"like_count" => 6290433
"dislike_count" => 744939
"view_count" => 2234478374
"duration" => 242
"upload_date" => "20140818"
"description" => "Taylor’s new release 1989 is Available Now featuring the hit single “Shake It Off” and her latest single “Blank Space”. "
"tags" => array:8 [
0 => "Taylor"
1 => "Swift"
2 => "Shake"
3 => "It"
4 => "Off"
5 => "Big"
6 => "Machine"
7 => "Records"
]
"uploader" => "TaylorSwiftVEVO"
"uploader_url" => "http://www.youtube.com/user/TaylorSwiftVEVO"
"thumbnail" => "https://i.ytimg.com/vi/nfWlot6h_JM/maxresdefault.jpg"
"streams" => array:2 [
0 => array:9 [
"url" => "https://r6---sn-4g57knkz.googlevideo.com/videoplayback?id=9d[...]"
"format" => "audio only (DASH audio)"
"format_note" => "Audio only, no video"
"extension" => "m4a"
"video_codec" => "none"
"audio_codec" => "mp4a.40.5"
"filesize" => 1438229
"height" => null
"width" => null
]
1 => array:9 [
"url" => "https://r6---sn-4g57knkz.googlevideo.com/videoplayback?key=[...]"
"format" => "1920x1080 (1080p)"
"format_note" => "1080p"
"extension" => "webm"
"video_codec" => "vp9"
"audio_codec" => "none"
"filesize" => 68016821
"height" => 1080
"width" => 1920
]
]
]
Giờ bạn muốn lấy url trong cái đoạn trên thì bạn chỉ việc làm như sau
$url = [];
foreach ($data2['streams'] as $stream) {
$url[] = $stream['url'];
};
return $url;
Vậy là ra được 2 url như bạn mong muốn mà
bạn đã xử lý được chưa vậy
@vunguyen10111995 tra ve ket qua nhu nay thi lam kieu j : http://sgorki.000webhostapp.com/vid.php
@sgorki cũng tương tự thôi, dùng json_decode rồi lấy ra giống kiểu bạn lấy giá trị của 1 phần tử trong mảng.
<?php
//Enter your code here, enjoy!
$data = '{
"status":true,
"message":"Successfully received info.",
"site":"Youtube",
"title":"Taylor Swift - Shake It Off",
"like_count":6290433,
"dislike_count":744939,
"view_count":2234478374,
"duration":242,
"upload_date":"20140818",
"description":"Taylor\u2019s new release 1989 is Available Now featuring the hit single \u201cShake It Off\u201d and her latest single \u201cBlank Space\u201d. ",
"tags":[
"Taylor",
"Swift",
"Shake",
"It",
"Off",
"Big",
"Machine",
"Records"],
"uploader":"TaylorSwiftVEVO",
"uploader_url":"http:\/\/www.youtube.com\/user\/TaylorSwiftVEVO",
"thumbnail":"https:\/\/i.ytimg.com\/vi\/nfWlot6h_JM\/maxresdefault.jpg",
"streams":[
{
"url":"https:\/\/r6---sn-4g57knkz.googlevideo.com\/videoplayback?id=9d[...]",
"format":"audio only (DASH audio)",
"format_note":"Audio only, no video",
"extension":"m4a",
"video_codec":"none",
"audio_codec":"mp4a.40.5",
"filesize":1438229,
"height":null,
"width":null
},
{
"url":"https:\/\/r6---sn-4g57knkz.googlevideo.com\/videoplayback?key=[...]",
"format":"1920x1080 (1080p)",
"format_note":"1080p",
"extension":"webm",
"video_codec":"vp9",
"audio_codec":"none",
"filesize":68016821,
"height":1080,
"width":1920
}
]}';
$data2 = json_decode($data, true);
foreach ($data2['streams'] as $value) {
echo $value['url'];
echo "\n";
}
Kết quả trả về:
https://r6---sn-4g57knkz.googlevideo.com/videoplayback?id=9d[...]
https://r6---sn-4g57knkz.googlevideo.com/videoplayback?key=[...]
chỉ lấy cái url thứ 2 thì thế nào?
foreach ($data2['streams'] as $key=> $value) {
if ($key == 1) {
echo $value['url'];
echo "\n";
}
}
@dao.thai.son kết quả nó trả về kiểu này thì lấy kiểu gì nhỉ ? http://sgorki.000webhostapp.com/vid.php
@sgorki
json_decode
object đó về thành array rồi access vào từng element của mảng.
@dao.thai.son ban co the code mau gium dc khong nhi?
@sgorki Bạn có thể tìm hiểu và code mà, dân dev là phải thế mới hay chứ. Mình không biết 1 chút gì về php mình search cú pháp của nó mình trả lời cho bạn như trên đó. Mình nghĩ việc tìm hiểu mấy cái này nhanh mà, người khác code cho được 1 lần đâu có code cho được mãi. Xin lỗi nếu bạn không thích phần trả lời này của mình.
@QuangPH minh k tim thay bai huong dan
@sgorki Mình search google 3 lần:
- php online editor
- string to json php
- for loop in php
@QuangPH cảm ơn bạn
json_decode(strJson, true); nó sẽ trả về arrData rồi xử lý bình thường thoai