【问题标题】:How do I pre parse a JSON String?如何预解析 JSON 字符串?
【发布时间】:2013-12-03 16:47:45
【问题描述】:

我想将此 JSON URL 提供给另一个站点

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 来删除三个 &lt;p&gt; 标签,不知何故?还是你能想到的其他方式?

【问题讨论】:

  • 你应该让他们修复他们的 JSON ......

标签: javascript json


【解决方案1】:

$.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/

【讨论】:

  • 谢谢 mpaf,对不起,我真的不是这方面的专家 - 我如何调用 .ajax 函数,将 reuslt 转换为字符串,去除前三个

    标记,然后解析生成的 JSON 字符串,请记住它也不是有效的 html

【解决方案2】:

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

同时,作为补丁,您应该将其下载为 HTML 内容,对其进行预解析(通过删除标签),然后将生成的内容解析为纯 JSON。

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

【讨论】:

  • 让他们修复它不是一种选择,我将如何将其下载为 HTML 内容,您的意思是通过 Javascript 调用吗?
  • 正是@mpaf 回复的内容:)。通过$.ajax获取HTML,然后修改写得不好的JSON,最后操作的结果直接到$.parseJSON
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多