如何获取JSON.Stringify正确解析变量?

时间:2018-06-19 14:02:44

标签: javascript json typescript

我无法弄清楚:-(我的客户正在做ajax httppost,我需要发送以下内容:

  private doSaveQuery(queryName: string): void {

    const info = {};
    info['userName'] = 'admin';
    info['userQueryName'] = queryName;
    ...

当它被字符串化时,它变成这样:

{"userName":"admin",
 "userQueryName":{"queryName":"MyName"}
}

为什么它使用我的变量名“ queryName”并将其作为键添加到我的值中???

我该怎么做?

{"userName":"admin",
  "userQueryName":"MyName"
}

我知道这很简单,所以请原谅我的无知:-)

谢谢!

2 个答案:

答案 0 :(得分:1)

在编码对象时,看起来queryName实际上是看起来像{queryName: 'MyName'}的对象。

要解决此问题,您应确保queryName只是字符串MyName

info['userQueryName'] = 'MyName'

按顺序,queryName不是您想的那样。

您当前实施的示例:

const queryName = {queryName: "MyName"}
const info = {
  userName: "admin",
  userQueryName: queryName
}
console.log(JSON.stringify(info))

您应该将queryName更改为仅字符串:

const queryName = "MyName"
const info = {
  userName: "admin",
  userQueryName: queryName
}
console.log(JSON.stringify(info))

如果您不能这样做,则可以从属性中构建信息:

const queryName = {queryName: "MyName"}
const info = {
  userName: "admin",
  userQueryName: queryName.queryName
}
console.log(JSON.stringify(info))

答案 1 :(得分:1)

您已指定为类型字符串,而打字稿可能应该已经发现您没有传递字符串。因为如果您这样做,它将做您想要的。 但是可能发生这样的事情。

function getMyJSON(queryName) {
   const info = {};
    info['userName'] = 'admin';
    info['userQueryName'] = queryName;
  return info;
}

const a = {queryName:"name"};

console.log(JSON.stringify(getMyJSON(a)));