Icecast json-status.xls,无效 json 答案为空白歌曲标题
Icecast json-status.xls, not valid json answer with blank song title
当我的曲目在标签中没有标题时,Icecast 会显示 -
而不是空白
行,所以,我得到 json 这样的(作为示例)并且这个 json 无效,因为 "title" : -
而不是 "title" : "-"
。我在这里检查过 - http://jsonlint.com/ 所以,我不能做 json_decode()
,函数 returns 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
行中,但我不知道我该怎么做。
如果没有办法得到有效的json,使用:
$json = str_replace( '"title": -', '"title": null', $json );
在使用 json_decode()
之前 将 "title": -
替换为 "title": null
。
这看起来像是 Icecast (xml2json.xslt) 使用的 XML 到 JSON 模板中的错误。它没有将“-”转换为字符串,可能是因为它认为它是一个负数,尽管没有数字。如果我能找出错误修复,我会尝试研究它。如果其他人想试一试并提出一个好的解决方案,我将不胜感激。
我想指出的是,您关于曲目没有标签的断言是错误的。您的源客户端软件似乎将流的 title 字段设置为 -
。如果它将 title 设置为空字符串,那么转换实际上会 return null
。这是因为流式 MP3 由于 Shoutcast 最初的做法而被严重破坏。轨道没有单独的元数据字段,只有 one 字段名为 title 以及如何使用它的各种约定。
您可以通过将其设置为空字符串来自行验证。 http://mds.planeset.ru:8000/admin/metadata.xsl?song=&mount=%2Fmds.mp3&mode=updinfo&charset=UTF-8
感谢您的报告,我们只能修复我们知道的错误。 (错误报告的首选位置是 http://trac.xiph.org )
当我的曲目在标签中没有标题时,Icecast 会显示 -
而不是空白
行,所以,我得到 json 这样的(作为示例)并且这个 json 无效,因为 "title" : -
而不是 "title" : "-"
。我在这里检查过 - http://jsonlint.com/ 所以,我不能做 json_decode()
,函数 returns 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
行中,但我不知道我该怎么做。
如果没有办法得到有效的json,使用:
$json = str_replace( '"title": -', '"title": null', $json );
在使用 json_decode()
之前 将 "title": -
替换为 "title": null
。
这看起来像是 Icecast (xml2json.xslt) 使用的 XML 到 JSON 模板中的错误。它没有将“-”转换为字符串,可能是因为它认为它是一个负数,尽管没有数字。如果我能找出错误修复,我会尝试研究它。如果其他人想试一试并提出一个好的解决方案,我将不胜感激。
我想指出的是,您关于曲目没有标签的断言是错误的。您的源客户端软件似乎将流的 title 字段设置为 -
。如果它将 title 设置为空字符串,那么转换实际上会 return null
。这是因为流式 MP3 由于 Shoutcast 最初的做法而被严重破坏。轨道没有单独的元数据字段,只有 one 字段名为 title 以及如何使用它的各种约定。
您可以通过将其设置为空字符串来自行验证。 http://mds.planeset.ru:8000/admin/metadata.xsl?song=&mount=%2Fmds.mp3&mode=updinfo&charset=UTF-8
感谢您的报告,我们只能修复我们知道的错误。 (错误报告的首选位置是 http://trac.xiph.org )