var twitchProfile = {};
request("https://api.twitch.tv/kraken/users/magnaboyy.json?client_id=8gkbch3ffqj35c1ccx088b9j6leifs8", function (error, response, body) {
const TwitchURL = body;
var jsonContent = JSON.parse(TwitchURL);
twitchProfile.display_name = (jsonContent.display_name);
twitchProfile.id = (jsonContent.id);
twitchProfile.name = (jsonContent.name);
twitchProfile.created_at = (jsonContent.created_at);
twitchProfile.logo = (jsonContent.logo);
console.log(twitchProfile);
在我的代码中,我抓取页面的HTML主体(这是json对象),然后我将对象中的每个键解析为JS对象中的一个键,考虑到我不想更改任何内容键的名称,或对象的内容,有没有办法一次性转换整个对象,而不是一次转换它的所有组件?如果没有,我是否以良好的方式做到了?
答案 0 :(得分:2)
是的,您只需将已解析的对象分配给您的变量:
var twitchProfile = {};
request("https://api.twitch.tv/kraken/users/magnaboyy.json?client_id=8gkbch3ffqj35c1ccx088b9j6leifs8", function (error, response, body) {
const TwitchURL = body;
var twitchProfile = JSON.parse(TwitchURL);
console.log(twitchProfile);
}
此外,如果您的'TwitchProfile'已经有一些属性,您必须合并对象。此处描述的合并方法:How can I merge properties of two JavaScript objects dynamically?
答案 1 :(得分:1)
如果您有不同的对象但需要将它们合并在一起,例如:
var a = {
x:0,
y:1,
z:2
}
var fromJSON = {
x:11,
y:12,
}
您可以使用es6 Object.Assign():
var a = {
x:0,
y:1,
z:2
}
var fromJSON = {
x:11,
y:12,
}
var assigned = Object.Assign(a,fromJSON);
console.log(assigned);
// assigned = {
// x:11,
// y:12,
// z:2
// }
答案 2 :(得分:0)
不,你能做的唯一一件事就是使用constructor。
请参见以下示例:
var jsonObj = {
"name" : "Alessandro",
"surname" : "Test",
"age" : 34
};
function Person(json){
this.name = json.name;
this.surname = json.surname;
this.age = json.age;
}
var person1 = new Person(jsonObj);
console.log("Hi " + person1.name);
答案 3 :(得分:0)
实现这一目标的方法:
1。您可以使用 JSON.parse() 和deep copy中为source object
创建destination(new) object
> JSON.stringify() JavaScript方法。
var jsonObj = {
"display_name" : "alpha",
"id" : 1,
"name" : "xyz",
"logo" : "blablabla"
};
var twitchProfile = JSON.parse(JSON.stringify(jsonObj));
console.log(twitchProfile);
2。使用 ES6
Spread运算符和Destruction Assignment。
const jsonObj = {
"display_name" : "alpha",
"id" : 1,
"name" : "xyz",
"logo" : "blablabla"
};
const {...twitchProfile} = jsonObj;
console.log(twitchProfile);
3。 Iterate
源对象使用for...in循环和assign
属性进入destination(new)
对象。
var jsonObj = {
"display_name" : "alpha",
"id" : 1,
"name" : "xyz",
"logo" : "blablabla"
};
var twitchProfile = {};
for (var i in jsonObj) {
twitchProfile[i] = jsonObj[i];
}
console.log(twitchProfile);