提问人:Brayn 提问时间:10/8/2008 最后编辑:Brayn 更新时间:3/25/2013 访问量:208149
如何在JavaScript中对数组元素进行JSON解码?
How to JSON decode array elements in JavaScript?
问:
我有一个 JavaScript 数组,其中包含一个 URL。如果我尝试简单地将 URL 放在页面中(数组位于涉及 Yahoo! Maps API 的项目中),它会按原样显示 URL。
但是,如果我尝试进行重定向或只是在链接数组元素上执行“警报”,我会得到:
function(){返回 JSON.encode(this);}
据我所知,这是因为浏览器在呈现页面时会进行 JSON.encode,因此链接显示正常。我已经尝试了几种方法来使其正确重定向(这就是我想对链接执行的操作)(包括使用“eval”),但没有运气。
在遵循了一些建议之后,我已经运行了,但它仍然返回相同的输出。eval('(' + jsonObject + ')')
那么这是如何做到的呢?
答:
1赞
Lou Franco
10/8/2008
#1
JavaScript 中的 JSON 解码只是一个 eval(),如果你信任字符串,或者如果你不信任,你可以在 http://json.org 上找到更安全的代码。
然后,您将拥有一个 JavaScript 数据结构,您可以遍历该数据结构以获取所需的数据。
评论
0赞
Brayn
10/8/2008
正如我所说,我试图“评估”链接元素,但随后它返回了“未定义”。数组中的数据来自解析 XML,您认为它与此有关吗?
5赞
Joel Anair
10/8/2008
#2
如果您在警报中收到以下文本:
function(){return JSON.encode(this);}
当您尝试 alert(myArray[i]) 时,有几种可能性:
- myArray[i] 是一个函数(最有可能)
- myArray[i] 是文字字符串 “function(){return JSON.encode(this);}”
- myArray[i] 有一个返回该函数或该字符串的 .toString() 方法。这是三者中最不可能的。
最简单的判断方法是检查 typeof(myArray[i])。
评论
0赞
Brayn
10/8/2008
我怀疑这是一个字面字符串。最有可能是一个函数。我尝试过“eval('(' + jsonObject + ')')”,但它仍然返回与以前相同的输出......
0赞
Joel Anair
10/9/2008
是的,可以想象将函数传递给 eval() 将调用该函数的 toString 方法,返回一个字符串,该字符串将返回该函数本身。所以这是有道理的。
2赞
Kon
10/8/2008
#3
eval('(' + jsonObject + ')')
评论
8赞
olliej
10/9/2008
eval 只是一种安全的方法,用于解码 JSON 数据,前提是您 100% 信任您的源:D
1赞
Vova Popov
3/29/2013
这不能被 eval-ed -> {“code”:200,“lang”:“en-de”,“text”:[“string 1”,“string 2”]}
1赞
Leonel Martins
10/10/2008
#4
如果你得到的对象元素是一个函数,你可以试试这个:
var url = myArray[i]();
9赞
Floccinaucinihilipilification.
3/15/2011
#5
假设您在 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>
44赞
matija kancijan
7/1/2011
#6
var obj = jQuery.parseJSON('{"name":"John"}');
alert( obj.name === "John" );
-1赞
pirogtm
3/25/2013
#7
我以这种方式解码 JSON:
eval( 'var from_json_object = ' + my_json_str + ';' );
评论