如何使用cURL来获取jSON数据和解码数据? [英] How to use cURL to get jSON data and decode the data?

查看:219
本文介绍了如何使用cURL来获取jSON数据和解码数据?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以我有一个链接返回一个jSON对象,我需要解码和放入PHP中的变量。



网址

  api.php ?action = getThreads& hash = 123fajwersa& node_id = 4& order_by = post_date& order = desc& limit = 1& grab_content& content_limit = 1 

这是它返回的对象

  {
count:1 ,
threads:{
38752:{
thread_id:38752,
node_id:4,
title:ShadyCraft Beta Launch!,
reply_count:45,
view_count:946,
user_id:2,
username:Shady,
post_date:1366956695,
sticky:0​​,
discussion_state:visible,
discussion_open:1,
discussion_type:
first_post_id:226167,
first_post_likes:7,
last_post_date:1369094302,
last_post_id:228226,
last_post_user_id
last_post_username:Shady,
prefix_id:19,
tinhte_xentag_tags:a:4:{i:0; s:9:\minecraft \ ; i:2; s:4:\news\; i:3; s:14:\private server\; i:1; s:10:\shadycraft \ ;},
content:{
count:1,
content:{
226167:{
post_id:226167 ,
thread_id:38752,
user_id:2,
username:Shady,
post_date:1366956695,
message :[ATTACH = full] 4143 [\ / ATTACH] \ n \ n我们完全重组了ShadyCraft,今天将推出ShadyCraft beta.\\\
\\\
Current Features \\\
[LIST] \\\
[*] Towns \\\
[*] Nations \\\
[*] All out wars \\\
[*]实时更新地图\\\
[*] No White-list\\\
[*] Money \\\
[*]悲伤允许在可能的地方\\\
[\ / LIST] \\\
这些只是一些功能,它们背后有很多事情。例如,有城镇和国家维护,税收,王国,市长和国王。\\\
\\ \\我真的想让服务器自我管理,这就是为什么悲伤和PvP允许在哪里可能。所有城镇和国家都不能被其他成员悲伤。你可以创建一个城镇,购买地块,并扩大城镇,如你所愿。\\\
\\\
[SIZE = 4]所有这一切都显示在实时更新地图[URL ='http:\ / \\ \ / SIZE] [\ / SIZE] \\\\ [SIZE = 4] [SIZE = 6] \ / SIZE] \\\
[SIZE = 6] Server-IP:50.7.6.116 [\ / SIZE] \\\
\\\
\\\
[USER = 118053] Frenchy [\ / USER] = 4863] Wolfbane [\ / USER],
ip_id:747429,
message_state:visible,
attach_count:1,
position :0,
likes:7,
like_users:a:5:{i:0; a:2:{s:7:\user_id\; i :105699; s:8:\username\; s:6:\kvothe\;} i:1; a:2:{s:7:\user_id\; i :146724; s:8:\username\; s:12:\Graveyard219\;} i:2; a:2:{s:7:\user_id\; i :70182; s:8:\username\; s:9:\wmbrown18\;} i:3; a:2:{s:7:\user_id\; i :5473; s:8:\username\; s:9:\Oblivious \;} i:4; a:2:{s:7:\user_id\; i :118053; s:8:\username\; s:7:\Frenchy \;}},
warning_id:0,
warning_message: ,
anonymous_posting_real_user_id:0,
anonymous_posting_real_username:
}
}
}
}
} $ b b}

我真的只对

感兴趣

 title:The ShadyCraft Beta Launch!,
reply_count:45,
view_count:946,
user_id :2,
username:Shady,
post_date:1366956695,
sticky:0,
discussion_state:visible,
discuss_open:1,

,最后是

  [ATTACH = full] 4143 [/ ATTACH] 

我们完全重组了ShadyCraft,今天将推出ShadyCraft beta 。

当前特色
[LIST]
[*]城镇
[*]国家
[*]所有战争
[*]实时更新地图
[*]没有白名单
[*]赚钱
[*]悲伤允许的地方
[/ LIST]
这些只是一些功能,它们背后有很多事情。例如,有城镇和国家维持,税收,王国,市长和国王。

我们真的想让服务器自我管理,这就是为什么悲伤和PVP被允许在哪里可能。所有城镇和国家都不能被其他成员悲伤。你可以创建一个城镇,购买地块,并扩大城市,你想要的。

[SIZE = 4]所有这些都显示在这里的[URL ='http://50.7.6.116:8123']的实时更新图中[/ SIZE] b
$ b [SIZE = 4] [SIZE = 6]立即加入测试[/ SIZE] [/ SIZE]
[SIZE = 6]服务器IP:50.7.6.116 [/ SIZE]


[USER = 118053] Frenchy [/ USER]和[USER = 4863] Wolfbane [/ USER]

那么如何提取jSON对象并将其放入PHP中的正确变量,以后可以使用?



变量如: $ username $ user_id $ message $ title $ discussState

我只需要知道如何检索jSON对象,然后将数据提取到PHP中的变量。



我现在可以得到PHP数组,但我有一些麻烦调用正确的值。


Array([count] => 1 [threads] => Array([13] thread_id]
=> 13 [node_id] => 4 [title] =>论坛集成接近完成[reply_count] => 0 [view_count] => 0 [user_id] => 59 [username] =>
Faeron [post_date] => 1369257302 [sticky] => 0 [discussion_state] =>
visible [discussion_open] => 1 [discussion_type] => [first_post_id] =>
23 [first_post_likes] = > 0 [last_post_user_id] =>
[last_post_user_id] =>
[last_post_date] => 1369257302
[last_post_id] => 1 [content] =>
Array [[23] => Array([post_id] => 23 [thread_id] => 13 [user_id] =>
59 [username] => Faeron [ post_date] => 1369257302 [message] =>这是
已经有一段时间了,因为我们开始整合phanime论坛与
主站点我们现在已经完成与phanime的集成
和主站点,你不会再注意到有两个
平台运行phanime,而是只有一个。我们的下一步是
主题的论坛,使它看起来像主网站! [ip_id] => 268
[message_state] =>可见[attach_count] => 0 [position] => 0 [喜欢]
=> 0 [喜欢] warning_id] => 0 [warning_message] =>))))))


现在让这个数组命名为 $ array 然后获取第一个元素的值[count]不能我只是说下面: print $ array [[count]] code>< - 这返回一个错误。



对于有数组本身的值的元素,这是 [threads] 元素。我如何获得,也许 [thread_id] 元素的值?

解决方案

我认为这将回答你的问题:P

  $ url =https://.../api.php?action = getThreads& hash = 123fajwersa& node_id = 4& order_by = post_date& order = desc& limit = 1& ; grab_content& content_limit = 1; 

使用 cURL

  //启动curl 
$ ch = curl_init();
//禁用SSL验证
curl_setopt($ ch,CURLOPT_SSL_VERIFYPEER,false);
//将返回响应,如果为false,则打印响应
curl_setopt($ ch,CURLOPT_RETURNTRANSFER,true);
//设置url
curl_setopt($ ch,CURLOPT_URL,$ url);
//执行
$ result = curl_exec($ ch);
//关闭
curl_close($ ch);

//将转储一个美女json:3
var_dump(json_decode($ result,true));

使用 file_get_contents

  $ result = file_get_contents($ url); 
//将转储一个美女json:3
var_dump(json_decode($ result,true));

访问

  $ array [threads] [13 / * thread id * /] [title/ * thread key * /] 
/ pre>

  $ array [threads] [13 / * thread id * /] [content/ * thread key * /] [content] [23 / * post id * ]; 


So I have a link that returns a jSON object, and I need to have it decoded and put into variables in PHP.

URL

api.php?action=getThreads&hash=123fajwersa&node_id=4&order_by=post_date&order=desc&limit=1&grab_content&content_limit=1

This is the object that it returns

{
    "count": 1,
    "threads": {
        "38752": {
            "thread_id": 38752,
            "node_id": 4,
            "title": "The ShadyCraft Beta Launch!",
            "reply_count": 45,
            "view_count": 946,
            "user_id": 2,
            "username": "Shady",
            "post_date": 1366956695,
            "sticky": 0,
            "discussion_state": "visible",
            "discussion_open": 1,
            "discussion_type": "",
            "first_post_id": 226167,
            "first_post_likes": 7,
            "last_post_date": 1369094302,
            "last_post_id": 228226,
            "last_post_user_id": 2,
            "last_post_username": "Shady",
            "prefix_id": 19,
            "tinhte_xentag_tags": "a:4:{i:0;s:9:\"minecraft\";i:2;s:4:\"news\";i:3;s:14:\"private server\";i:1;s:10:\"shadycraft\";}",
            "content": {
                "count": 1,
                "content": {
                    "226167": {
                        "post_id": 226167,
                        "thread_id": 38752,
                        "user_id": 2,
                        "username": "Shady",
                        "post_date": 1366956695,
                        "message": "[ATTACH=full]4143[\/ATTACH]\n \nWe've completely restructured ShadyCraft, and today will be the launch of the ShadyCraft beta.\n \nCurrent Features\n[LIST]\n[*]Towns\n[*]Nations\n[*]All out wars\n[*]A live update map\n[*]No White-list\n[*]Earn Money\n[*]Griefing allowed where possible\n[\/LIST]\nThese are just some features which have a lot more things behind them. For instance, there is town and nation upkeep, tax, kingdoms, mayors, and kings.\n \nWe really wanted to have the server self-governed and this is why griefing and PvP are allowed where ever they are possible. All towns and nations cannot be griefed by other members. You can create a town and buy plots for it and expand the town as you wish.\n \n[SIZE=4]All of this is shown in the live updating map located [URL='http:\/\/50.7.6.116:8123']here[\/URL].[\/SIZE]\n \n[SIZE=4][SIZE=6]Join the Beta Now[\/SIZE][\/SIZE]\n[SIZE=6]Server-IP: 50.7.6.116[\/SIZE]\n \n \n[USER=118053]Frenchy[\/USER] and [USER=4863]Wolfbane[\/USER]",
                        "ip_id": 747429,
                        "message_state": "visible",
                        "attach_count": 1,
                        "position": 0,
                        "likes": 7,
                        "like_users": "a:5:{i:0;a:2:{s:7:\"user_id\";i:105699;s:8:\"username\";s:6:\"kvothe\";}i:1;a:2:{s:7:\"user_id\";i:146724;s:8:\"username\";s:12:\"Graveyard219\";}i:2;a:2:{s:7:\"user_id\";i:70182;s:8:\"username\";s:9:\"wmbrown18\";}i:3;a:2:{s:7:\"user_id\";i:5473;s:8:\"username\";s:9:\"Oblivious\";}i:4;a:2:{s:7:\"user_id\";i:118053;s:8:\"username\";s:7:\"Frenchy\";}}",
                        "warning_id": 0,
                        "warning_message": "",
                        "anonymous_posting_real_user_id": 0,
                        "anonymous_posting_real_username": ""
                    }
                }
            }
        }
    }
}

I am really only interested in the

"title":"The ShadyCraft Beta Launch!",  
"reply_count:"45, 
"view_count": 946,  
"user_id":2, 
"username":"Shady", 
"post_date":1366956695, 
"sticky":0, 
"discussion_state":"visible",
"discussion_open":1,

and finally the message

[ATTACH=full]4143[/ATTACH]

We've completely restructured ShadyCraft, and today will be the launch of the ShadyCraft beta.

Current Features
[LIST]
[*]Towns
[*]Nations
[*]All out wars
[*]A live update map
[*]No White-list
[*]Earn Money
[*]Griefing allowed where possible
[/LIST]
These are just some features which have a lot more things behind them. For instance, there is town and nation upkeep, tax, kingdoms, mayors, and kings.

We really wanted to have the server self-governed and this is why griefing and PvP are allowed where ever they are possible. All towns and nations cannot be griefed by other members. You can create a town and buy plots for it and expand the town as you wish.

[SIZE=4]All of this is shown in the live updating map located [URL='http://50.7.6.116:8123']here[/URL].[/SIZE]

[SIZE=4][SIZE=6]Join the Beta Now[/SIZE][/SIZE]
[SIZE=6]Server-IP: 50.7.6.116[/SIZE]


[USER=118053]Frenchy[/USER] and [USER=4863]Wolfbane[/USER]

So how can I extract the jSON object and put it in to correct variables in PHP, that I can later use?

Variables like: $username, $user_id, $message, $title, $discussionState, and so on.

I just need to know how I can retrieve the jSON object, then extract the data into variables in PHP.

I am now able to get the PHP array, but I am having some troubles calling the correct values. Here is the array.

Array ( [count] => 1 [threads] => Array ( [13] => Array ( [thread_id] => 13 [node_id] => 4 [title] => Forum Integration nearly complete! [reply_count] => 0 [view_count] => 0 [user_id] => 59 [username] => Faeron [post_date] => 1369257302 [sticky] => 0 [discussion_state] => visible [discussion_open] => 1 [discussion_type] => [first_post_id] => 23 [first_post_likes] => 0 [last_post_date] => 1369257302 [last_post_id] => 23 [last_post_user_id] => 59 [last_post_username] => Faeron [prefix_id] => 1 [content] => Array ( [count] => 1 [content] => Array ( [23] => Array ( [post_id] => 23 [thread_id] => 13 [user_id] => 59 [username] => Faeron [post_date] => 1369257302 [message] => It's been quite a while since we began to integrate the phanime Forums with the main site. We have now finished the integration with the phanime Forums and the main site. You will no longer notice that there are two platforms running phanime, but instead only one. Our next step is to theme the forums to make it look like the main site! [ip_id] => 268 [message_state] => visible [attach_count] => 0 [position] => 0 [likes] => 0 [like_users] => a:0:{} [warning_id] => 0 [warning_message] => ) ) ) ) ) )

Now lets say this array was named $array then to get the first element's value "[count]" can't I just say the following: print $array["[count]"] <-- this returns an error.

What about the element that has a value as an array itself, which is the [threads] element. How do I get, perhaps the [thread_id] element's value?

解决方案

I think this one will answer your question :P

$url="https://.../api.php?action=getThreads&hash=123fajwersa&node_id=4&order_by=post_date&order=‌​desc&limit=1&grab_content&content_limit=1";

Using cURL

//  Initiate curl
$ch = curl_init();
// Disable SSL verification
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
// Will return the response, if false it print the response
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Set the url
curl_setopt($ch, CURLOPT_URL,$url);
// Execute
$result=curl_exec($ch);
// Closing
curl_close($ch);

// Will dump a beauty json :3
var_dump(json_decode($result, true));

Using file_get_contents

$result = file_get_contents($url);
// Will dump a beauty json :3
var_dump(json_decode($result, true));

Accessing

$array["threads"][13/* thread id */]["title"/* thread key */]

And

$array["threads"][13/* thread id */]["content"/* thread key */]["content"][23/* post id */]["message" /* content key */];

这篇关于如何使用cURL来获取jSON数据和解码数据?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆