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

Bra*_*ayn 21 javascript json

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

但是,如果我尝试重定向或只是对链接数组元素执行"警报",我得到:

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

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

遵循一些建议我已经运行eval('(' + jsonObject + ')')但它仍然返回相同的输出.

那怎么回事?

mat*_*jan 40

var obj = jQuery.parseJSON('{"name":"John"}');
alert( obj.name === "John" );
Run Code Online (Sandbox Code Playgroud)

请参阅jQuery API.


小智 7

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

echo json_encode($iniData);
Run Code Online (Sandbox Code Playgroud)

在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>
Run Code Online (Sandbox Code Playgroud)


Joe*_*air 5

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

function(){return JSON.encode(this);}
Run Code Online (Sandbox Code Playgroud)

当你尝试提醒(myArray [i])时,有几种可能性:

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

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


Lou*_*nco 1

如果您信任该字符串,JavaScript 中的 JSON 解码就是一个 eval();如果您不信任该字符串,则可以在http://json.org上找到更安全的代码。

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