我的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})
})
}
但是我在浏览器中收到此错误消息:
您对我有什么建议吗?
最诚挚的问候
马丁
编辑:
在这里您可以找到完整的代码: https://github.com/kamami/prototype/blob/RealDatabase/src/components/ProgressMobileStepper.jsx
答案 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)