2012-06-18 25 views
68

Tôi có một đối tượng JSON trong dưới dạng:Làm thế nào để tạo ra đối tượng JSON sử dụng jQuery

temp:[ 
     { 
      test:'test 1', 
      testData: [ 
         {testName: 'do',testId:''} 
         ], 
      testRcd:'value'        
     }, 
     { 
      test:'test 2', 
      testData: [ 
          {testName: 'do1',testId:''} 
         ], 
      testRcd:'value'       
     } 
     ], 

Làm thế nào tôi có thể tạo đối tượng JSON trong jquery cho định dạng trên. Tôi muốn tạo một đối tượng JSON động.

Trả lời

25

Một "đối tượng JSON" không có ý nghĩa: JSON là một định dạng trao đổi dựa trên cấu trúc khai báo đối tượng Javascript.

Nếu bạn muốn chuyển đổi đối tượng javascript của mình thành chuỗi json, hãy sử dụng JSON.stringify(yourObject);

Nếu bạn muốn tạo một đối tượng javascript, chỉ cần làm điều đó như thế này:

var yourObject = { 
      test:'test 1', 
      testData: [ 
       {testName: 'do',testId:''} 
      ], 
      testRcd:'value' 
}; 
+1

@guillaumealgis, bạn có thể giải thích cuộn của bạn trở lại để chỉnh sửa của tôi? Nếu bạn chạy đối tượng thông qua [JSONLint] (http://jsonlint.com/), nó được gắn cờ là không hợp lệ (các phím bên trái cần phải được trích dẫn kép). Tôi không cho rằng bạn sai, tôi muốn tìm hiểu lý do tại sao bạn tin rằng đó là JSON hợp lệ vì nó có thể là thứ mà tôi không hiểu. Nếu bạn chạy phiên bản của tôi thông qua trình xác nhận hợp lệ, nó sẽ trở lại dưới dạng JSON hợp lệ. – delliottg

+1

@delliottg Không sử dụng trình xác thực JSON để xác thực JavaScript. Vui lòng đọc lại câu trả lời của tôi. –

+2

@delliottg Tôi không nói đó là JSON hợp lệ. Điểm của câu trả lời này là phân biệt JSON một đối tượng JS. Hãy thử chạy mã dystroy trong một trình thông dịch JS và bạn sẽ thấy rằng nó chạy tốt. –

177

Chỉ cần đặt dữ liệu của bạn vào một đối tượng như thế này:

var myObject = new Object(); 
myObject.name = "John"; 
myObject.age = 12; 
myObject.pets = ["cat", "dog"]; 

Sau đó stringify nó thông qua:

var myString = JSON.stringify(myObject); 

Bạn không cần jQuery cho việc này. Đó là JS thuần khiết.

+2

Có thể tạo tên chỉ mục một cách linh hoạt hay không. cho ví dụ: var name = $ ('# myname').val(); myObject.name = "john" // chỉ mục tên tại đây sẽ là dinamaclly từ hộp nhập liệu. –

+3

Vết sưng cho nhận xét ở trên: Để thay thế bất kỳ giá trị tĩnh nào như '.name'' .age' hoặc '.pets' chỉ thay thế giá trị đó, bao gồm dấu chấm, với biến được bao trong dấu ngoặc vuông. Ví dụ: 'myObject [cssProp] = cssVal;' Sau đó, bất cứ giá trị nào của hai biến css này sẽ được sử dụng trong Object. Đây là một jsFiddle: [http://fiddle.jshell.net/arttronics/rucjtbza/](http://fiddle.jshell.net/arttronics/rucjtbza/) – arttronics

4

Tôi tin rằng anh ấy yêu cầu viết json mới vào một thư mục. Bạn sẽ cần một số Javascript PHP. Vì vậy, để heo con quay trở lại các câu trả lời khác:

script.js

var yourObject = { 
    test:'test 1', 
    testData: [ 
    {testName: 'do',testId:''} 
    ], 
    testRcd:'value' 
}; 
var myString = 'newData='+JSON.stringify(yourObject); //converts json to string and prepends the POST variable name 
$.ajax({ 
    type: "POST", 
    url: "buildJson.php", //the name and location of your php file 
    data: myString,  //add the converted json string to a document. 
    success: function() {alert('sucess');} //just to make sure it got to this point. 
}); 
return false; //prevents the page from reloading. this helps if you want to bind this whole process to a click event. 

buildJson.php

<?php 
    $file = "data.json"; //name and location of json file. if the file doesn't exist, it will be created with this name 

    $fh = fopen($file, 'a'); //'a' will append the data to the end of the file. there are other arguemnts for fopen that might help you a little more. google 'fopen php'. 

    $new_data = $_POST["newData"]; //put POST data from ajax request in a variable 

    fwrite($fh, $new_data); //write the data with fwrite 

    fclose($fh); //close the dile 
?> 
-1
var model = {"Id": "xx", "Name":"Ravi"}; 
$.ajax({ url: 'test/set', 
         type: "POST", 
         data: model, 
         success: function (res) { 
          if (res != null) { 
           alert("done."); 
          } 
         }, 
         error: function (res) { 

         } 
        }); 
+0

Thật tuyệt nhưng câu hỏi không liên quan đến C# hoặc ASP – Machavity

+0

@Machavity, bạn tìm thấy C# ở đâu? –

+1

Nhận xét đó là về bản sửa đổi đầu tiên của câu trả lời của bạn, trong đó có C# trong đó. Bây giờ nó thậm chí còn ít ý nghĩa hơn, khi bạn đang mã hóa cứng biến 'model'. Câu hỏi này là: _ "Trong JavaScript, làm thế nào tôi có thể tạo một đối tượng tại thời gian chạy và đại diện cho đối tượng đó trong ký hiệu JSON" _, câu trả lời của bạn vẫn không hiển thị. – CodeCaster

0

Nested JSON đối tượng

var data = { 
     view:{ 
      type: 'success', note:'Updated successfully', 
     }, 
    }; 

Bạn có thể phân tích cú pháp này data.view.typedata.view.note

JSON Object và bên trong mảng

var data = { 
      view: [ 
       {type: 'success', note:'updated successfully'} 
      ], 
    }; 

Bạn có thể phân tích này data.view[0].typedata.view[0].note

Các vấn đề liên quan