reactjs获取-正文:json.stringify

时间:2018-12-27 14:53:03

标签: javascript json reactjs fetch

我的Json对象看起来像这样:

[
{
    "keys": {
        "_1": ".",
        "_2": ".",
        "_3": "."
    },
    "credits": -200,
    "_id": "5c1e3e7531dccf0017cf70b9",
    "firstName": "Martin",
    "lastName": "Seubert",
    "username": "admin",
    "createdDate": "2018-12-22T13:39:01.244Z",
    "__v": 0,
    "id": "5c1e3e7531dccf0017cf70b9"
}
]

我想通过以下函数将键设置为一个值,我正在从另一个API提取:

updateKeys() {
  let user = JSON.parse(localStorage.getItem('user'));
  var requestUrl = 'https://mighty-atoll-75521.herokuapp.com/users/';
  var id = user._id
  fetch(requestUrl + id, {
      method: 'put',
      headers: {
        ...authHeader(),
        'Accept': 'application/json, text/plain, */*',
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({keys._1:  this.props.code})
    })
}

但是我在浏览器中收到此错误消息:

enter image description here

您对我有什么建议吗?

最诚挚的问候

马丁

编辑:

在这里您可以找到完整的代码: https://github.com/kamami/prototype/blob/RealDatabase/src/components/ProgressMobileStepper.jsx

4 个答案:

答案 0 :(得分:1)

您无法创建具有keys._1之类的属性名称的对象。

您必须分两个步骤进行操作:

var o = {};
o.keys = {};
o.keys._1 = this.props.code;

如果这是一个意图,您可以引用它

o['keys._1'] = this.props.code;

答案 1 :(得分:1)

    updateKeys() {
  let user = JSON.parse(localStorage.getItem('user'));
  var requestUrl = 'https://mighty-atoll-75521.herokuapp.com/users/';
  var id = user._id
  fetch(requestUrl + id, {
      method: 'put',
      headers: {
        ...authHeader(),
        'Accept': 'application/json, text/plain, */*',
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({[keys._1]:  this.props.code})
    })
}

答案 2 :(得分:1)

您正尝试将变量用作“属性”,因此需要ES6中的 ComputedPropertyName 。试试看     body: JSON.stringify({[keys._1]: this.props.code}) 代替     body: JSON.stringify({keys._1: this.props.code})

答案 3 :(得分:0)

为了清楚起见,我不希望这些值作为我的新键。我只想覆盖我以前的价值观!

我尝试了这个:

  body: JSON.stringify({[user.keys[[this.props.matchId]]]: this.props.code})

但是在我的开发人员工具中,它看起来像这样:

enter image description here

它将值作为我的键,但是我不想要那个。看起来应该像这样:

{key._1: true}