Tôi có một số nguyên mẫu Javascript. Ban đầu, các cá thể sẽ chỉ được điền đầy đủ ID, với một số thông tin về trình giữ chỗ chung cho các dữ liệu khác. Sau đó tôi gửi một tin nhắn đến máy chủ với ID và loại đối tượng (sử dụng chức năng AJAX của jQuery) và máy chủ trả về một đối tượng JSON với tất cả thông tin còn thiếu (nhưng không có ID). Các biến trong đối tượng được trả về có cùng tên giống với các biến trong đối tượng hiện có.Sao chép đối tượng JSON AJAX vào đối tượng hiện có
Cách dễ nhất để chuyển điều này vào đối tượng trống hiện có là gì? Tôi đã đưa ra một vài lựa chọn thay thế
- thiết lập các đối tượng tương ứng với đối tượng trở về, sau đó copy vào id (mất chức năng nguyên mẫu?)
- tạo một hàm cho từng đối tượng mà phải mất một đối tượng với nhau cấu trúc và các bản sao dữ liệu
- lặp qua các cặp khóa-giá trị của đối tượng JSON để và sao chép chúng vào đối tượng hiện
Nếu tôi sử dụng tùy chọn thứ ba, đây là cách chính xác để làm điều đó? :
for (var key in json) {
if (object.hasOwnProperty(key)) {
object[key] = json[key];
}
}
giả json
là đối tượng quay trở lại và object
là đối tượng hiện có.
Nếu 'json' là JSON đơn giản thì tôi không nghĩ bạn thậm chí cần kiểm tra' hasOwnProperty'. Trừ khi ai đó đã được funking với 'Object.prototype'. –
Câu hỏi đặt ra là, bạn muốn làm gì với đối tượng JSON của mình. Nếu bạn muốn đánh giá một đối tượng, JSON.parse() thực hiện thủ thuật cho bạn. Nếu bạn muốn kết hợp nó với một đối tượng hiện có, jQuery.extend() sẽ là một gợi ý tốt hơn. –
@PaulGrime Tôi đang làm điều đó để phòng ngừa trong trường hợp có thêm một khóa trong đối tượng 'json' mà tôi không muốn trong' đối tượng' hiện có. Nếu bạn nhận thấy, tôi đang lặp qua các phím trong 'json' nhưng kiểm tra đối với' đối tượng'. – Jaws212