我如何预解析JSON字符串?

时间:2013-12-02 09:51:57

标签: javascript json

我想将此JSON网址提供给其他网站

http://naturetrek.co.uk/blog/api/get_recent_posts/

但问题是因为最初的三个<p>标签是无效的JSON,你可以在这里查看...

http://jsonlint.com/

如果你删除这3个标签,它就会生效。

我们无法更改Naturetrek博客的JSON字符串输出。

在我们自己的代码中,我们使用以下内容....

<h2>Naturetrek BLOG</h2>
<div id="ntblog"></div>

<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script type="text/javascript">

    $(document).ready(function () {

        var blogURL = "http://naturetrek.co.uk/blog/api/get_recent_posts/";

        $.getJSON(blogURL, function(info) {

            alert("here");
            var output = info.status;

            /*
            for (var i = 0; i <= info.posts.length - 1; i++) {
            output += '<li>' +
            '<a href = "' + info.posts[i].url +
            '">' + info.posts[i].title + '</a></li>';

            }
            */

            var ntblog = document.getElementById('ntblog');
            ntblog.innerHTML = output;
        });
    });
</script>

警报永远不会被调用,因为JSON是无效的JSON。我的问题是 - 有一种方法可以让JSON去除三个<p> TAGS,有哪些?还是你可以想到的另一种方式?

2 个答案:

答案 0 :(得分:2)

$。getJSON只是简写:

$.ajax({
  dataType: "json",
  url: url,
  data: data,
  success: success
});

请参阅此处的文档:http://api.jquery.com/jQuery.getJSON/

只需使用$ .ajax将dataType更改为“html”,并使用$ .parseJSON在成功函数中解析修改后的JSON数据

注意:由于您似乎在进行跨域请求,因此必须使用jsonp,请在此处阅读更多内容:

http://learn.jquery.com/ajax/working-with-jsonp/

答案 1 :(得分:1)

你应该真的要求他们修复他们的JSON ......

与此同时,作为补丁,您应该将其作为HTML内容下载,预先解析(通过删除标记),然后将生成的内容解析为普通JSON。

但是上面的过程实际上是一个补丁,当JSON生产者修复它时它会消失。