2012-01-22 37 views
58
window.onload = function(){ 
    var obj = '{ 
      "name" : "Raj", 
      "age" : 32, 
      "married" : false 
      }'; 

    var val = eval('(' + obj + ')'); 
    alert("name : " + val.name + "\n" + 
      "age : " + val.age + "\n" + 
      "married : " + val.married); 

} 

Trong một mã như thế này, tôi đang cố gắng tạo chuỗi JSON chỉ để chơi xung quanh. Nó ném lỗi, nhưng nếu tôi đặt tất cả các tên, tuổi, kết hôn trong một dòng duy nhất (dòng 2) nó không. Có vấn đề gì?Làm thế nào để tạo chuỗi JSON trong JavaScript?

+2

Xem này trả lời http://stackoverflow.com/questions/3904269/convert- object-to-json-string – powtac

+0

'eval' là ** ác **. – candlejack

Trả lời

56

Javascript không xử lý Chuỗi trên nhiều dòng.

Bạn sẽ cần phải nối những:

var obj = '{' 
     +'"name" : "Raj",' 
     +'"age" : 32,' 
     +'"married" : false' 
     +'}'; 

Bạn cũng có thể sử dụng mẫu chữ trong ES6 trở lên: (See here for the documentation)

var obj = `{ 
      "name" : "Raj", 
      "age" : 32, 
      "married" : false, 
      }`; 
+10

Hoặc đặt \ ở cuối mỗi dòng trong chữ. – Phrogz

+1

Đối với các chuỗi nhiều dòng, thay vì dấu nháy đơn hoặc kép, bạn có thể sử dụng '(dấu kiểm ngược ở bên trái phím số 1). Chúng được gọi là 'mẫu chữ'. – Blue

+2

Chắc chắn: không giải quyết cho câu trả lời này và nhìn vào những người khác. – AsTeR

13

Sử dụng JSON.stringify:

> JSON.stringify({ asd: 'bla' }); 
'{"asd":"bla"}' 
+1

Lời khuyên tốt, nhưng nó không cho thấy vấn đề là gì. – Phrogz

+0

Xem thêm [json2.js] (https://github.com/douglascrockford/JSON-js) nếu bạn cần hỗ trợ các trình duyệt cũ hơn. – Douglas

+0

@Douglas là Douglas Crockford này? Chỉ tò mò ??? – nepsdotin

-3

chuỗi json không thể có ngắt dòng trong đó. Bạn sẽ phải thực hiện tất cả một dòng: {"key":"val","key2":"val2",etc....}.

Nhưng không tự tạo chuỗi JSON. Có rất nhiều thư viện làm điều đó cho bạn, lớn nhất trong số đó là jquery.

+6

JSON có thể có ngắt dòng, nhưng cú pháp văn bản chuỗi JavaScript không thể. –

+0

interally trong một chuỗi, yeah, nhưng không phải giữa các cặp khóa/giá trị. –

+1

Tôi nghĩ rằng bạn đang bối rối cú pháp chữ chuỗi JavaScript không thể chứa ký tự dòng mới chưa thoát, và đánh dấu JSON. Đánh dấu JSON chắc chắn nhất có thể chứa ngắt dòng. –

58

Hàm JSON.stringify sẽ biến đối tượng json của bạn thành chuỗi:

var jsonAsString = JSON.stringify(obj); 

Trong trường hợp trình duyệt không triển khai (IE6/IE7), hãy sử dụng tập lệnh JSON2.js. Nó an toàn vì nó sử dụng bản thực thi gốc nếu nó tồn tại.

+1

Đó sẽ là câu trả lời đúng – sandman

128

Cách tôi làm điều đó là:

var obj = new Object(); 
    obj.name = "Raj"; 
    obj.age = 32; 
    obj.married = false; 
    var jsonString= JSON.stringify(obj); 

Tôi đoán theo cách này có thể làm giảm cơ hội cho các lỗi.

+2

Đây sẽ là câu trả lời vì nó thanh lịch. – Pred

5

Tôi nghĩ rằng cách này sẽ giúp bạn ...

var name=[]; 
var age=[]; 
name.push('sulfikar'); 
age.push('24'); 
var ent={}; 
for(var i=0;i<name.length;i++) 
{ 
ent.name=name[i]; 
ent.age=age[i]; 
} 
JSON.Stringify(ent); 
12

Điều này có thể khá dễ dàng và đơn giản

var obj = new Object(); 
obj.name = "Raj"; 
obj.age = 32; 
obj.married = false; 

//convert object to json string 
var string = JSON.stringify(obj); 

//convert string to Json Object 
console.log(JSON.parse(string)); // this is your requirement. 
Các vấn đề liên quan