有没有更简单的方法将外部JSON对象转换为JS对象?

时间:2017-04-19 07:35:59

标签: javascript json web

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对象中的一个键,考虑到我不想更改任何内容键的名称,或对象的内容,有没有办法一次性转换整个对象,而不是一次转换它的所有组件?如果没有,我是否以良好的方式做到了?

4 个答案:

答案 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,
}

您可以使用 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);