如何 JSON 解码 JavaScript 中的数组元素?

IT技术 javascript json
2021-02-20 04:25:44

我有一个 JavaScript 数组,其中包含一个 URL。如果我尝试简单地将 URL 放在页面中(该数组位于一个涉及 Yahoo! Maps API 的项目中),它会按原样显示 URL。

但是,如果我尝试进行重定向或只是在链接数组元素上执行“警报”,则会得到:

function(){return JSON.encode(this);}

据我所知,这是因为浏览器在呈现页面时会执行 JSON.encode,因此链接显示正常。我已经尝试了几种方法来使其正确重定向(这就是我想要对链接执行的操作)(包括使用 'eval'),但没有成功。

按照我运行的一些建议之后eval('(' + jsonObject + ')'),它仍然返回相同的输出。

那么这是怎么做的呢?

6个回答
var obj = jQuery.parseJSON('{"name":"John"}');
alert( obj.name === "John" );

请参阅 jQuery API

假设您在 PHP 中有一个数组,作为 $iniData 有 5 个字段。如果使用 ajax -

echo json_encode($iniData);

在 Javascript 中,使用以下内容:

<script type="text/javascript">
    $(document).ready(function(){
        $.ajax({
            type: "GET",
            url: "ajaxCalls.php",
            data: "dataType=ini",
            success: function(msg)
            {
                var x = eval('(' + msg + ')');
                $('#allowed').html(x.allowed);              // these are the fields which you can now easily access..
                $('#completed').html(x.completed);
                $('#running').html(x.running);
                $('#expired').html(x.expired);
                $('#balance').html(x.balance);
            }
        });
    });
</script>

如果您在警报中收到此文本:

function(){return JSON.encode(this);}

当您尝试 alert(myArray[i]) 时,有几种可能性:

  • myArray[i] 是一个函数(很可能)
  • myArray[i] 是文字字符串“function(){return JSON.encode(this);}”
  • myArray[i] 有一个 .toString() 方法,它返回那个函数或那个字符串。这是三者中最不可能的。

最简单的判断方法是检查 typeof(myArray[i])。

我怀疑这是一个文字字符串。最有可能是一个函数。我试过“eval('(' + jsonObject + ')')”,但它仍然返回与以前相同的输出......
2021-04-30 04:25:44
是的,可以想象将函数传递给 eval() 会调用该函数的 toString 方法,返回一个字符串,该字符串将 eval 返回到该函数本身。所以这是有道理的。
2021-05-05 04:25:44
eval('(' + jsonObject + ')')
这不能被评估 -> {"code":200,"lang":"en-de","text":["string 1","string 2"]}
2021-05-03 04:25:44
如果您 100% 信任您的来源,则 eval 只是一种解码 JSON 数据的安全方法:D
2021-05-10 04:25:44

JavaScript 中的 JSON 解码只是一个 eval(),如果你相信字符串,或者你可以在http://json.org 上找到的更安全的代码,如果你不相信。

然后,您将拥有一个 JavaScript 数据结构,您可以遍历该数据结构以获取所需的数据。

正如我所说,我试图“评估”链接元素,但它返回“未定义”。数组中的数据来自解析 XML,您认为它与此有关吗?
2021-05-06 04:25:44