【问题标题】:How to build a JSON string from a JSON object [duplicate]如何从 JSON 对象构建 JSON 字符串 [重复]
【发布时间】:2013-11-28 15:52:38
【问题描述】:

我正在尝试获取一个 JSON 对象并构建一个 JSON 字符串,但我不知道该怎么做。

这是我目前所拥有的,它给了我正确的输出。

var execs = '';
$.each(window.ob.executives, function(idx, obj) {
    execs = idx + ':' + obj.name;
});

我需要的是这样的字符串:

{ 1: 'test1', 2: 'test2', 3: 'test3', 4: 'test4' }

谁能告诉我如何构建这个字符串?

另外,您可能会注意到我使用了window 变量,我知道这不好。如果有人能告诉我如何获取另一个函数中的这个变量的内容,那将不胜感激。

编辑: stringify 不会给我我需要的东西。这是我得到的:

[{"test1":"1","test2":"2"},{"test3":"3","test4":"4"}]

【问题讨论】:

    标签: jquery json


    【解决方案1】:

    这里不需要 jQuery:

    var execs = JSON.stringify( window.ob.executives );
    

    编辑

    OP指定变量的结构后,我建议如下(遍历两层嵌套对象,提取数据添加到中间对象,然后可以序列化):

    var obj = {};
    $.each(window.ob.executives, function( key, val ) {
      $.each( val, function( iKey, iVal ) {
        obj[ iVal ] = iKey;
      });
    });
    var execs = JSON.stringify( obj );
    

    【讨论】:

    • 西尔科,谢谢。这没有给我我需要的东西。这是我得到的:[{"test1":"1","test2":"2"},{"test3":"3","test4":"4"}]。我需要的是一对{}括号内的所有索引和值
    • 祝福你,Sirko。谢谢!
    • Sirko,有没有办法从索引中删除引号?我从他们那里得到一个错误
    • @NaN 你需要数字索引还是真实数组?对于前者,请尝试obj[ +iVal ] = iKey;
    • Sirko,我实际上已经解决了这个问题。我刚进去并对后端代码进行了一些更改。不过,有些东西会导致错误。似乎返回的 JSON 字符串被解释为 unicode。是这样吗?
    【解决方案2】:

    您可以使用 JSON.stringify(JSON Object) 函数,将 JSON 对象转换为 JSON 字符串。

    【讨论】:

    • 谢谢。 stringify 并没有给我我需要的东西。
    • 那你可以试试这个,var execs = '{'; $.each(window.ob.executives, function(idx, obj) { execs += idx + ':' + obj.name+','; }); execs=execs.substring(0,(execs.length-1)); execs+='}';
    • 感谢技术。我也试试这个。
    • 嘿,技术,这确实有效,但我遇到的唯一问题是值周围没有引号,这会使事情中断。不过谢谢你。
    • 那你可以试试这个,execs += idx + ':"' + obj.name+'",';
    【解决方案3】:

    使用此代码JSON.stringify(data);

    例如:

       $.ajax({
                        type: "POST",
                        url: "/Item/Create",
                        data: JSON.stringify({ "item": item, "status": status }),
                        dataType: 'json',
                        contentType: 'application/json;',
                    success: function (data) {
                        },
                    error: function (data) {
                        TestAlert("Error");
                    }
                });
    

    【讨论】:

      猜你喜欢
      • 2018-08-11
      • 1970-01-01
      • 1970-01-01
      • 2014-06-22
      • 1970-01-01
      • 2017-01-04
      • 1970-01-01
      • 2020-09-04
      • 2023-03-22
      相关资源
      最近更新 更多