1

我想创建一个 json 对象,例如:

{
   name: "Julia"
   birthdate: "xxxx"
   movies: [{title: "movie1", rating: 5}, {title: "movie2", rating 3}}]
}

我想做类似的事情:

var myobj = [];
myobj.push({name: "Julia", birthdate: "xxxx"});

myobj.movies = [];
myobj.movies.push({title: "movie1", rating: 5});
myobj.movies.push({title: "movie2", rating: 3});

但我无法创建那个“电影”部分。我该如何做到这一点?

4

3 回答 3

7

您收到此错误是因为您将对象创建为数组。您必须创建为对象才能添加属性:

var myobj = {name: "Julia", birthdate: "xxxx"};

myobj.movies = []; 
myobj.movies.push({title: "movie1", rating: 5}); 
myobj.movies.push({title: "movie2", rating: 3}); 
于 2012-07-12T15:48:02.650 回答
1

您不能混合数据类型(推送仅适用于带有对象的数组和属性),请尝试以下操作:

var myobj = {};
myobj.persons = [];
myobj.persons.push({name: "Julia", birthdate: "xxxx"});

myobj.movies = [];
myobj.movies.push({title: "movie1", rating: 5});
myobj.movies.push({title: "movie2", rating: 3});
于 2012-07-12T15:48:46.930 回答
1

是的,这行得通

var myobj = []; myobj.push({name: "Julia", birthdate: "xxxx"});

myobj.push({movies: []});

myobj.movies = [];
myobj.movies.push({title: "movie1", rating: 5});
myobj.movies.push({title: "movie2", rating: 3});

console.log(myobj);</code>
于 2012-07-12T15:50:05.133 回答