当前位置: 首页 > 面试题库 >

将JavaScript对象或数组转换为json以获取Ajax数据

胡俊贤
2023-03-14
问题内容

所以我正在创建一个包含元素信息的数组。我遍历所有元素并保存索引。由于某种原因,我无法将此数组转换为json对象!

这是我的数组循环

var display = Array();
$('.thread_child').each(function(index, value){
   display[index]="none";
   if($(this).is(":visible")){
      display[index]="block";
   }
});

我尝试通过以下方式将其变成JSON对象:

data = JSON.stringify(display);

它似乎没有发送正确的JSON格式!

如果我像这样手工编码,它将起作用并发送信息:

data = {"0":"none","1":"block","2":"none","3":"block","4":"block","5":"block","6":"block","7":"block","8":"block","9":"block","10":"block","11":"block","12":"block","13":"block","14":"block","15":"block","16":"block","17":"block","18":"block","19":"block"};

当我在JSON.stringify对象上发出警报时,它看起来与手工编码的对象相同。但这是行不通的。

我快要解决这个问题了!我在这里想念什么?发送此信息以获得手动编码格式的最佳方法是什么?

我正在使用此ajax方法发送数据:

$.ajax({
        dataType: "json",
        data:data,
        url: "myfile.php",
        cache: false,
        method: 'GET',
        success: function(rsp) {
            alert(JSON.stringify(rsp));
        var Content = rsp;
        var Template = render('tsk_lst');
        var HTML = Template({ Content : Content });
        $( "#task_lists" ).html( HTML );
        }
    });

因为我正在显示信息(而不是更新或插入),所以使用GET方法。仅将显示信息发送到我的php文件。

最终解决方案

var display = {};
$('.thread_child').each(function(index, value){
   display[index]="none";
   if($(this).is(":visible")){
      display[index]="block";
   }
});

$.ajax({
        dataType: "json",
        data: display,
        url: "myfile.php",
        cache: false,
        method: 'GET',
        success: function(rsp) {
            alert(JSON.stringify(rsp));
        var Content = rsp;
        var Template = render('tsk_lst');
        var HTML = Template({ Content : Content });
        $( "#task_lists" ).html( HTML );
        }
    });

问题答案:

我不确定,但我认为您可能会对数组如何在JSON中序列化感到惊讶。让我们隔离问题。考虑以下代码:

var display = Array();
display[0] = "none";
display[1] = "block";
display[2] = "none";

console.log( JSON.stringify(display) );

这将打印:

["none","block","none"]

这就是JSON实际上序列化数组的方式。但是,您想看到的是这样的:

{"0":"none","1":"block","2":"none"}

要获得此格式,您要序列化对象,而不是数组。因此,让我们像这样重写上面的代码:

var display2 = {};
display2["0"] = "none";
display2["1"] = "block";
display2["2"] = "none";

console.log( JSON.stringify(display2) );

这将以您想要的格式打印。

您可以在此处进行操作:http :
//jsbin.com/oDuhINAG/1/edit?js,控制台



 类似资料:
  • 问题内容: 我需要将JSON对象字符串转换为JavaScript数组。 这是我的JSON对象: 我想拥有: 我该如何实现? 问题答案: var json_data = {“2013-01-21”:1,”2013-01-22”:7}; var result = [];

  • 我正在php控制器中运行一个数据库查询,并将结果返回给一个Ajax函数。下面是php代码。 下面是我在ajax中的函数: 我的问题是如何将返回的json对象转换为javascript数组。

  • 问题内容: 转换的最佳方法是什么: 至: 问题答案: ECMAScript 6引入了易于填充的内容: 该方法用于将所有可枚举的自身属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。 数组的自身属性不会被复制,因为它无法枚举。 另外,您可以使用ES6 传播语法来达到相同的结果:

  • 问题内容: 我正在尝试将数组转换为对象,并且我快到了。 这是我的输入数组: 这是我当前的输出对象: 这是我想要的输出对象: 这是我当前的代码: 问题答案: 你不能那样做。 不是有效的JavaScript对象。 javascript中的对象是键值对。看看你的情况如何,然后是冒号,然后是数字?的是,号码是的。 如果执行此操作,则将无法访问属性。 这是Firefox控制台的结果:

  • 问题内容: 我有一个想要转换为纯JavaScript数组的json数组: 这是我的json数组: 如何将其转换为普通的javascript数组,如下所示: 问题答案: 已经是JS对象(不是JSON)。但是,您可以在这里: 编辑:将 元素插入数组中的正确位置。谢谢@RoToRa 也许一开始不创建此类对象会更容易。它是如何创建的?

  • 我在数组中有一组值,每个值都有一个和。 一旦我有了值数组和类型控制台和,输出是: 如何将这些值存储在哈希映射中,如键值(ID-LABEL)对,并将其存储在json中?