给定一串JSON数据,您如何安全地将该字符串转换为JavaScript对象?
很显然,你可以通过像......这样的东西不安全地做到这一点.
var obj = eval("(" + json + ')');
Run Code Online (Sandbox Code Playgroud)
...但是这使得我们容易受到包含其他代码的json字符串的影响,这对于简单的eval来说似乎非常危险.
我需要将对象序列化为JSON.我正在使用jQuery.是否有"标准"方法来做到这一点?
我的具体情况:我有一个定义如下所示的数组:
var countries = new Array();
countries[0] = 'ga';
countries[1] = 'cd';
...
Run Code Online (Sandbox Code Playgroud)
我需要把它变成一个字符串传递给$.ajax()这样:
$.ajax({
type: "POST",
url: "Concessions.aspx/GetConcessions",
data: "{'countries':['ga','cd']}",
...
Run Code Online (Sandbox Code Playgroud) 我有一个包含对象和数组的嵌套数据结构.如何提取信息,即访问特定或多个值(或键)?
例如:
var data = {
code: 42,
items: [{
id: 1,
name: 'foo'
}, {
id: 2,
name: 'bar'
}]
};
Run Code Online (Sandbox Code Playgroud)
我怎么能访问name第二项items?
我在使用AJAX访问的Java服务器应用程序中有一个字符串.它看起来像下面这样:
var json = [{
"adjacencies": [
{
"nodeTo": "graphnode2",
"nodeFrom": "graphnode1",
"data": {
"$color": "#557EAA"
}
}
],
"data": {
"$color": "#EBB056",
"$type": "triangle",
"$dim": 9
},
"id": "graphnode1",
"name": "graphnode1"
},{
"adjacencies": [],
"data": {
"$color": "#EBB056",
"$type": "triangle",
"$dim": 9
},
"id": "graphnode2",
"name": "graphnode2"
}];
Run Code Online (Sandbox Code Playgroud)
当字符串从服务器中拉出时,是否有一种简单的方法可以将其转换为活动的JavaScript对象(或数组)?或者我是否必须手动拆分字符串并手动构建我的对象?
例如,HTTP REST API只返回了一个JSON,但当然它现在是一个字符串.如何将其转换为JSON?
未捕获的TypeError:无法使用'in'运算符搜索"length"中的"length"
这是我尝试$.each对此JSON对象执行此操作时收到的错误:
{"type":"Anuncio","textos":["Probando esto","$ 20150515"],"submit":"codParameters?___DDSESSIONID\u003d14EA4721A904D6DD71591156996E29F7%3A%2FMobilTest"}
Run Code Online (Sandbox Code Playgroud)
我也尝试用stringify做同样的事情,但是我收到了同样的错误:
{\"type\":\"Anuncio\",\"textos\":[\"Probando esto\",\"$ 20150515\"],\"submit\":\"codParameters?___DDSESSIONID\\u003d06CBEC9D1A53616EFF703A8C71FBC2B4%3A%2FMobilTest\"}"
Run Code Online (Sandbox Code Playgroud)
如果我___DDSESSIONID\\u003d06CBEC9D1A53616EFF703A8C71FBC2B4%3A%2FMobilTest从对象中删除参数,$ .each工作正常.
为什么会发生这种情况?
提前致谢.
下面的代码适用于实时网站,但我不能让它在网站jsfiddle上运行.
例如,见这个.
任何人都可以告诉我为什么它不适用于jsfiddle?
在控制台上它记录:ReferenceError: fillList is not defined和ReferenceError: mySelectList is not defined.
当代码嵌入到代码片段时,代码可以正常工作:
function BetterSelect(oSelList) {
this.objSelectList = oSelList;
this.objSelectList.onchange = this.selectionChanged;
}
BetterSelect.prototype.clear = function() {
this.objSelectList.options.length = 0;
}
BetterSelect.prototype.fill = function(aValues) {
this.clear();
for (var i = 0; i < aValues.length; i++) {
this.objSelectList.options[i] = new Option(aValues[i]);
}
}
BetterSelect.prototype.find = function(strToFind, bSelect) {
var indx = -1;
this.objSelectList.options.selectedIndex = -1;
for (var i = 0; i …Run Code Online (Sandbox Code Playgroud)我无法从JQery.ajax调用中获取JSON对象的内容.我的电话:
$('#Search').click(function () {
var query = $('#query').valueOf();
$.ajax({
url: '/Products/Search',
type: "POST",
data: query,
dataType: 'application/json; charset=utf-8',
success: function (data) {
alert(data);
for (var x = 0; x < data.length; x++) {
content = data[x].Id;
content += "<br>";
content += data[x].Name;
content += "<br>";
$(content).appendTo("#ProductList");
// updateListing(data[x]);
}
}
});
});
Run Code Online (Sandbox Code Playgroud)
似乎正在正确返回JSON对象,因为"alert(data)"显示以下内容
[{"Id": "1", "Name": "Shirt"}, {"Id": "2", "Name":"Pants"}]
Run Code Online (Sandbox Code Playgroud)
但是当我尝试使用以下命令向页面显示Id或Name时:
content = data[x].Id;
content += "<br>";
content += data[x].Name;
content += "<br>";
Run Code Online (Sandbox Code Playgroud)
它会向页面返回"undefined".我究竟做错了什么?
谢谢您的帮助.
可能重复:
我有一个嵌套的数据结构/我如何访问特定的值?
如何才能在Javascript中获取每个对象的名称和值?
我有一个JSON对象,其中包含以下内容:
[
{
"_id":"5078c3a803ff4197dc81fbfb",
"email":"user1@gmail.com",
"image":"some_image_url",
"name":"Name 1"
},
{
"_id":"5078c3a803ff4197dc81fbfc",
"email":"user2@gmail.com",
"image":"some_image_url",
"name":"Name 2"
}
]
Run Code Online (Sandbox Code Playgroud)
我想将"_id"键更改为"id",这样就可以了
[
{
"id":"5078c3a803ff4197dc81fbfb",
"email":"user1@gmail.com",
"image":"some_image_url",
"name":"Name 1"
},
{
"id":"5078c3a803ff4197dc81fbfc",
"email":"user2@gmail.com",
"image":"some_image_url",
"name":"Name 2"
}
]
Run Code Online (Sandbox Code Playgroud)
我怎么能用Javascript,jQuery或Ruby,Rails做到这一点?
谢谢.