在php中使用JSON
我在回显JSON文件中的数据时遇到问题:在php中使用JSON,php,xml,json,Php,Xml,Json,我在回显JSON文件中的数据时遇到问题: <?php $url = file_get_contents("http://api.erpk.org/citizen/profile/3121752.json?key=Yn3AsG80"); $json = file_get_contents($url); $data = json_decode($json, true); echo "<pre>"; var_dump($data); echo"</pre>"; ?>
<?php
$url = file_get_contents("http://api.erpk.org/citizen/profile/3121752.json?key=Yn3AsG80");
$json = file_get_contents($url);
$data = json_decode($json, true);
echo "<pre>"; var_dump($data); echo"</pre>";
?>
我的问题是它一次加载所有数据,我只想回显每个数据
我没有使用JSON的经验,所以我不知道要回显哪些变量
通过您可以访问的JSON访问
$data = json_decode($json, true);
var_dump($data['name']);
我希望实现以下目标:
json\u decode($json,true)
返回一个普通数组,它不是特定于json的,您可以像访问其他数组一样访问它的元素:
$data = json_decode($json);
var_dump($data->name);
如果要获取对象,请删除第二个参数:
$url = 'http://api.erpk.org/citizen/profile/3121752.json?key=Yn3AsG80';
你误用了
文件获取内容,所以我猜这就是你的问题所在。要从该URL获取数据,请仅使用此URL的第一行:
<?php
$json = '{"id":3121752,"name":"SnowderBlazer","birth":"2010-04-10","avatar":"http://static.erepublik.net/uploads/avatars/Citizens/2010/04/10/4bb9a72cc291faaaf7af8e78ed0a8509_100x100.jpg","online":false,"ban":null,"alive":true,"level":97,"experience":360391,"strength":42859.62,"rank":{"points":437120237,"level":64,"image":"http://www.erepublik.com/images/modules/ranks/god_of_war_2.png","name":"God of War**"},"elite_citizen":false,"national_rank":1,"residence":{"country":{"id":65,"name":"Serbia","code":"RS"},"region":{"id":198,"name":"Midi-Pyrenees"}},"citizenship":{"id":65,"name":"Serbia","code":"RS"},"about":"Voters Club Moderator\ncatch me on #voters @Rizon\nIRC Nick : Snowderblazer OR Snowderblazer[BNC]\norder herehttp://erepublik-market.com/voters/newOrder.html?adp=1549866\n[ident:9vrwQZB9]","party":{"id":2479,"name":"Ujedinjena eSrbija","role":"Party Member"},"army":{"id":1980,"name":"Legija Stranaca Elite","role":"Commander","created_at":"2012-05-26","avatar":"http://static.erepublik.net/uploads/avatars/Groups/2012/05/26/f80bf05527157a8c2a7bb63b22f49aaa_medium.jpg","rank":"Commander"},"newspaper":{"id":241367,"role":"Press director","name":"M.A.D.S News"},"top_damage":{"damage":215238312,"date":"2013-05-16","message":"Achieved while successfully defending Basilicata against Italy on day 2,004"},"true_patriot":{"damage":3021790429,"since":"2012-04-26"},"medals":{"battle_hero":248,"campaign_hero":98,"congress_member":9,"country_president":0,"hard_worker":36,"media_mogul":5,"mercenary":1,"resistance_hero":2,"society_builder":0,"super_soldier":171,"top_fighter":3,"true_patriot":43},"hit":14924}';
$data = json_decode($json, true);
echo "Name: {$data['name']}\n";
echo "Date of birth: {$data['birth']}\n\n";
echo "Level: {$data['rank']['level']}\n";
echo "Rank: {$data['rank']['name']}\n\n";
echo "Medals\n";
foreach ($data['medals'] as $medalName => $number) {
echo ucfirst(str_replace('_', ' ', $medalName)) . ": {$number}\n";
}
无论如何,这里有一个简单的例子来回应给定JSON数据集的简短概要
它显示了如何访问第一级字段,如name
和birth
,第二级字段为rank\level
和rank\name
,最后是一组动态字段,如奖牌
Name: SnowderBlazer
Date of birth: 2010-04-10
Level: 64
Rank: God of War**
Medals
Battle hero: 248
Campaign hero: 98
Congress member: 9
Country president: 0
Hard worker: 36
Media mogul: 5
Mercenary: 1
Resistance hero: 2
Society builder: 0
Super soldier: 171
Top fighter: 3
True patriot: 43
json\u decode($json,true)
返回一个普通数组,它不是特定于json的,您可以像访问其他数组一样访问它的元素,例如var\u dump($data['name'])
我认为前两行应该压缩为$json=file\u get\u contents(“http://api.erpk.org/citizen/profile/3121752.json?key=Yn3AsG80");代码>这仍然不起作用我得到了以下错误|注意:尝试获取非object属性你能给我一个使用我的问题的例子吗?这一切都很好而且有效,但我有一个问题,json每1小时更新一次,所以我不能继续更新$json=,这部分可以解决吗?
<?php
$json = '{"id":3121752,"name":"SnowderBlazer","birth":"2010-04-10","avatar":"http://static.erepublik.net/uploads/avatars/Citizens/2010/04/10/4bb9a72cc291faaaf7af8e78ed0a8509_100x100.jpg","online":false,"ban":null,"alive":true,"level":97,"experience":360391,"strength":42859.62,"rank":{"points":437120237,"level":64,"image":"http://www.erepublik.com/images/modules/ranks/god_of_war_2.png","name":"God of War**"},"elite_citizen":false,"national_rank":1,"residence":{"country":{"id":65,"name":"Serbia","code":"RS"},"region":{"id":198,"name":"Midi-Pyrenees"}},"citizenship":{"id":65,"name":"Serbia","code":"RS"},"about":"Voters Club Moderator\ncatch me on #voters @Rizon\nIRC Nick : Snowderblazer OR Snowderblazer[BNC]\norder herehttp://erepublik-market.com/voters/newOrder.html?adp=1549866\n[ident:9vrwQZB9]","party":{"id":2479,"name":"Ujedinjena eSrbija","role":"Party Member"},"army":{"id":1980,"name":"Legija Stranaca Elite","role":"Commander","created_at":"2012-05-26","avatar":"http://static.erepublik.net/uploads/avatars/Groups/2012/05/26/f80bf05527157a8c2a7bb63b22f49aaa_medium.jpg","rank":"Commander"},"newspaper":{"id":241367,"role":"Press director","name":"M.A.D.S News"},"top_damage":{"damage":215238312,"date":"2013-05-16","message":"Achieved while successfully defending Basilicata against Italy on day 2,004"},"true_patriot":{"damage":3021790429,"since":"2012-04-26"},"medals":{"battle_hero":248,"campaign_hero":98,"congress_member":9,"country_president":0,"hard_worker":36,"media_mogul":5,"mercenary":1,"resistance_hero":2,"society_builder":0,"super_soldier":171,"top_fighter":3,"true_patriot":43},"hit":14924}';
$data = json_decode($json, true);
echo "Name: {$data['name']}\n";
echo "Date of birth: {$data['birth']}\n\n";
echo "Level: {$data['rank']['level']}\n";
echo "Rank: {$data['rank']['name']}\n\n";
echo "Medals\n";
foreach ($data['medals'] as $medalName => $number) {
echo ucfirst(str_replace('_', ' ', $medalName)) . ": {$number}\n";
}
Name: SnowderBlazer
Date of birth: 2010-04-10
Level: 64
Rank: God of War**
Medals
Battle hero: 248
Campaign hero: 98
Congress member: 9
Country president: 0
Hard worker: 36
Media mogul: 5
Mercenary: 1
Resistance hero: 2
Society builder: 0
Super soldier: 171
Top fighter: 3
True patriot: 43