当我的曲目标签中没有标题时,Icecast会显示-
而不是空白
line,所以,我得到这样的json(例如),这个json无效,因为"title" : -
而不是"title" : "-"
。我在这里查了一下 - http://jsonlint.com/所以,我不能json_decode()
,函数返回null
{
"icestats": {
"admin": "admin@admin",
"host": "host.com",
"location": "Moscow",
"server_id": "Icecast 2.4.2",
"server_start": "Fri, 15 May 2015 16:25:24 +0300",
"server_start_iso8601": "2015-05-15T16:25:24+0300",
"source": [
{
"audio_info": "channels=2;samplerate=44100;bitrate=192",
"channels": 2,
"genre": "various",
"listener_peak": 3,
"listeners": 0,
"listenurl": "http://mds.planeset.ru:8000/mds.mp3",
"samplerate": 44100,
"server_description": "Трансляции Модель Для Сборки
музыка",
"server_name": "Модель для сборки - музыка",
"server_type": "audio/mpeg",
"stream_start": "Fri, 15 May 2015 16:25:33 +0300",
"stream_start_iso8601": "2015-05-15T16:25:33+0300",
"title": -,
"dummy": null
},
{
"audio_info": "channels=2;samplerate=44100;bitrate=192",
"channels": 2,
"genre": "various",
"listener_peak": 10,
"listeners": 9,
"listenurl": "http://mds.planeset.ru:8000/mds_voice.mp3",
"samplerate": 44100,
"server_description": "Трансляции Модель Для Сборки -
голос",
"server_name": "Модель для сборки - голос",
"server_type": "audio/mpeg",
"stream_start": "Fri, 15 May 2015 16:25:33 +0300",
"stream_start_iso8601": "2015-05-15T16:25:33+0300",
"title": "Фред Саберхаген - Доброжил",
"dummy": null
}
]
}
}
这是json的例子,你可以在第一种情况下看到我有title: -
因为它我不能json_decode。
服务器上有来自Doeke Zanstra https://github.com/doekman/xml2json-xslt的文件xml2json.xslt。我想这个文件将xml转换为json,也许有一种方法可以添加新规则,将空白-
行中的null
转换为title
,但我不知道我是怎么做的可以做到。
答案 0 :(得分:1)
如果无法获得有效的json,请使用:
$json = str_replace( '"title": -', '"title": null', $json );
在使用"title": -
之前将"title": null
替换为json_decode()
。
答案 1 :(得分:1)
这看起来像是Icecast使用的XML to JSON模板中的错误(xml2json.xslt)。它没有将' - '转换为字符串,可能因为它认为它是负数,尽管没有数字。如果我能搞清楚修正错误,我会试着去研究一下。如果其他人想要对它进行刺戳并想出一个好的解决方案,我将不胜感激。
我想要注意的是,你断言你的赛道没有标签是错误的。您的源客户端软件似乎将流的标题字段设置为-
。如果将 title 设置为空字符串,则转换实际上将返回null
。这源于流媒体MP3因Shoutcast最初完成的原因而被严重破坏的事实。轨道没有单独的元数据字段,只有一个字段名为 title ,以及各种约定如何使用。
您可以通过将其设置为空字符串来自行验证。 http://mds.planeset.ru:8000/admin/metadata.xsl?song=&mount=%2Fmds.mp3&mode=updinfo&charset=UTF-8
感谢您的报告,我们只能修复我们所知道的错误。 (错误报告的首选位置是http://trac.xiph.org)