我有这样的JSON:
<b>Just add maxHeight={200} inside SelectField</b>
< SelectField
multiple
fullWidth = {true}
value={this.state.candidate_profile_arr}
onChange = {this.handleChange}
maxHeight = {200}
>
{this.state.profile.map((profile, i) =>
<MenuItem value={profile.id} key={i} primaryText={profile.name} />)
}
</SelectField>
,我需要从中获取“ id”值。第一个数字(“ 245”)始终是不同的。
答案 0 :(得分:2)
JSON.parse
reviver parameter可用于检查所有属性:
var id, json = '{"245":{"data":{"userData":{"id":"61","image":"http://example.com","name":"John Smith","friends":[{"invited":"67"},{"invited":"62"},{"invited":"65"},{"invited":"66"}],"operator":true}}}}'
var obj = JSON.parse(json, (key, val) => key == 'id' ? id = val : val)
console.log( id )
答案 1 :(得分:1)
如果始终具有此结构,则可以通过以下方法获取ID:
var obj = {
"245": {
"data": {
"userData": {
"id": "61",
"image": "http://example.com",
"name": "John Smith",
"friends": [
{
"invited": "67"
},
{
"invited": "62"
},
{
"invited": "65"
},
{
"invited": "66"
}
],
"operator": true
}
}
}
};
var result = Object.entries(obj);
console.log(result[0][1]["data"]["userData"]["id"])
答案 2 :(得分:0)
不确定您要寻找的最终输出是什么。您可以采取以下方法。如果您需要所有密钥,则ID对可以尝试此操作,其中数据是您的对象。
const arr = [];
Object.keys(data).forEach((key, index) => {
arr.push({ key, id: data[key].data.userData.id });
});
console.log(arr);
如果只需要单个值,并且可以确定对象结构始终使用必需的键,则键为“ 245”。
const id = data[key].data.userData.id
如果需要,您还可以查看lodash.get
const id = _.get(data[key], "data.userData.id", "NA");