【发布时间】:2014-11-25 19:50:48
【问题描述】:
大家好,我真的需要帮助。
我的 JSON 提要给了我这个键/值对:
"custom_fields":{"zn_meta_elements":["a:8:{s:7:\"sp_link\";a:2:{s:3:\"url\";s:0:\"\";s:6:\"target\";s:6:\"_blank\";}s:6:\"sp_col\";s:0:\"\";s:14:\"sp_show_social\";s:3:\"yes\";s:10:\"port_media\";a:1:{i:0;a:3:{s:20:\"dynamic_element_type\";s:10:\"port_media\";s:21:\"port_media_image_comb\";a:3:{s:5:\"image\";s:0:\"\";s:3:\"alt\";s:0:\"\";s:5:\"title\";s:0:\"\";}s:21:\"port_media_video_comb\";s:26:\"http:\/\/vimeo.com\/112591203\";}}s:15:\"page_title_show\";s:3:\"yes\";s:10:\"page_title\";s:0:\"\";s:13:\"page_subtitle\";s:0:\"\";s:20:\"zn_disable_subheader\";s:2:\"no\";}"]}
我想从中获取值的变量是port_media_video_comb
所以我想把http:\/\/vimeo.com\/112591203\部分拉出来,变成一个可用的url。
我目前用来提取信息的代码如下所示:
jQuery.each(data.posts, function(i, item) {
html += '<li>';
html += '<div class="entry"><img src="' + data.posts[i].thumbnail + '" width="50px" height="50px" style="float:left; padding-right: 5px;"><a href="' + data.posts[i].url +'" target="_blank">' + data.posts[i].title + '</a><br /><p>' + data.posts[i].date + '</div>' ;
html += '</li>';
});
我会喜欢data.posts[i].custom_fields.port_media_video_comb,但是我如何确保它可以作为 url 工作?我将在<iframe> 标签中使用它。
感谢任何帮助!
编辑:
好的,所以我使用了这个网站:http://json.parser.online.fr/ 为了帮助我找出我需要抓取的元素的种类。
我发现我可以像这样访问字符串:
data.posts[i].custom_fields.zn_meta_elements 并返回:
"a:8:{s:7:\"sp_link\";a:2:{s:3:\"url\";s:0:\"\";s:6:\"target\";s:6:\"_blank\";}s:6:\"sp_col\";s:0:\"\";s:14:\"sp_show_social\";s:3:\"yes\";s:10:\"port_media\";a:1:{i:0;a:3:{s:20:\"dynamic_element_type\";s:10:\"port_media\";s:21:\"port_media_image_comb\";a:3:{s:5:\"image\";s:0:\"\";s:3:\"alt\";s:0:\"\";s:5:\"title\";s:0:\"\";}s:21:\"port_media_video_comb\";s:26:\"http:\/\/vimeo.com\/112591203\";}}s:15:\"page_title_show\";s:3:\"yes\";s:10:\"page_title\";s:0:\"\";s:13:\"page_subtitle\";s:0:\"\";s:20:\"zn_disable_subheader\";s:2:\"no\";}"
作为一个字符串。
我怎样才能只抓住分号的 http://... 部分并将其转换为对 url 友好的 .. url?
【问题讨论】:
-
这不是 JSON。它是一种不同形式的序列化(也许是 PHP?)。你需要找到合适的反序列化器并反序列化成一个数据结构,你可以从中读取你想要的数据。
-
你为什么不直接反序列化这个字符串,这样你就可以简单地访问你需要的属性:custom_fields = JSON.parse(custom_fields);这就是 JSON 的重点:无需处理字符串,这是一个对象!!
标签: jquery arrays json vimeo custom-fields