【问题标题】:Return Full JSON Object to Javascript from Service File从服务文件返回完整的 JSON 对象到 Javascript
【发布时间】:2023-04-08 06:34:01
【问题描述】:

我有一个服务文件以以下格式正确返回数据

{"0":{"BUTTER": "PEANUT","TYPE":"ORGANIC"},
"1":{"BUTTER":"PEANUT","TYPE":"SPREAD"},
"2":{"BUTTER":"ALMOND","TYPE":"ORGANIC"}}

我正在尝试通过一个函数将键/值对一起放入另一个 JavaScript 文件,但我遇到了一些麻烦

此代码仅返回黄油键值:

butterList = Object.keys(butter).map(function(x) {return butter[x];});

返回

"PEANUT","PEANUT","ALMOND"

但是我怎样才能像传递整个键/值一样

{"BUTTER:PEANUT,TYPE:ORGANIC}, {BUTTER:PEANUT,TYPE:SPREAD}, {BUTTER:ALMOND,TYPE:ORGANIC"}

【问题讨论】:

  • 你想要的对象是什么样的?
  • 对不起,我应该指定,我只是想同时传递键和值。我可以单独得到它们。
  • 在上面的示例中,butter 对象究竟是什么?它与您问题顶部的 JSON 有何关系?
  • 一个以黄油为参数的函数,以及对从 SQL 语句中提取的服务文件的 ajax 调用。黄油可以重命名为任何东西,没关系
  • 也许我不清楚。在您上面的问题中,您有Object.keys(butter)...butter 这里的值是多少?它来自哪里?

标签: javascript dictionary


【解决方案1】:

这就是你要找的吗? -> {"0":"PEANUT","1":"PEANUT","2":"ALMOND"}

const butter = { "0": { "BUTTER": "PEANUT", "TYPE": "ORGANIC" }
               , "1": { "BUTTER": "PEANUT", "TYPE": "SPREAD"  }
               , "2": { "BUTTER": "ALMOND", "TYPE": "ORGANIC" }
               };

butterList = Object
              .keys(butter)
              .reduce((a,c)=>{a[c] = butter[c]['BUTTER']; return a},{})

document.write( JSON.stringify ( butterList ))
// {"0":"PEANUT","1":"PEANUT","2":"ALMOND"}

还是这个?? -> (string) = {"BUTTER:PEANUT,TYPE:ORGANIC},{BUTTER:PEANUT,TYPE:SPREAD},{BUTTER:ALMOND,TYPE:ORGANIC"}

const butter = { "0": { "BUTTER": "PEANUT", "TYPE": "ORGANIC" }
               , "1": { "BUTTER": "PEANUT", "TYPE": "SPREAD"  }
               , "2": { "BUTTER": "ALMOND", "TYPE": "ORGANIC" }
               };
               
const butterList1 = Object.keys(butter)
                    .reduce((a,c,i,t)=>
                      {
                      let s = JSON.stringify(butter[c]).replace(/"/g,'')
                      if (i==0) s = `{"${s.substring(1)}`
                      if (i==(t.length-1)) s = `${s.substring(0,s.length-1)}"}`
                      a.push(s)
                      return a
                      },[])
                      .join(',');

document.write( butterList1 )

但我觉得你只需要这个:

const butterList = Object.values(butter)

【讨论】:

  • 不,我可以很好地获取密钥...我只是想让密钥和值对一起通过
  • @datagoat 如何连接到一个数组中?
  • {"BUTTER:PEANUT, TYPE:ORGANIC}, {BUTTER:PEANUT,TYPE:SPREAD}, {BUTTER: ALMOND, TYPE: ORGANIC"} 是我想要返回的内容
  • @datagoat 里面没有双引号??喜欢{"BUTTER":"PEANUT","TYPE":"ORGANIC"}, {"B"UTTER":"PEANUT","TYPE":"SPREAD"}, {"BUTTER":"ALMOND","TYPE":"ORGANIC"}
  • @datagoat 我添加了一个与您以前的格式相对应的新答案
【解决方案2】:

你是这个意思吗?

butterList = Object.keys(butter).map(function(x) {return {butter[x]}});

【讨论】:

  • 对不起,我应该指定,我只是想同时传递键和值。我可以单独得到它们。
  • @datagoat 抱歉,我想念你的上下文
【解决方案3】:

更新:替换为以下函数

function items(butter) {
 var i, arr = [];
 for(i in butter) {
   arr.push(butter[i]);
 }
 return JSON.stringify(arr);
}

取自here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多