2013-02-12 49 views
5

Tôi mới đến định dạng json. Tôi muốn tạo một chuỗi json sau bằng cách sử dụng gói C# và json.net.Làm thế nào để tạo chuỗi json của tôi bằng cách sử dụng C#?

Đây là mục tiêu định dạng Json tôi:

{ 
    "GetQuestions": 
    { 
    "s1":"Q1,Q2", 
    "s2":"Q1,Q3", 
    "s3":"Q4,Q5" 
    } 
} 

Ở đây, tôi đang lưu trữ mỗi sinh viên questions.But đôi khi, tổng số sinh viên có thể ví dụ vary.for nó có thể được S1, S2 chỉ hoặc s1 , s2, s3, s4 .... Điều này được tính khi chạy trong C# .Vì vậy, tôi muốn tạo chuỗi json tùy thuộc vào danh sách sinh viên ....

Vui lòng hướng dẫn tôi thoát khỏi vấn đề này?

+0

[bạn đã cố gắng gì] (http://whathaveyoutried.com)? Và danh sách của bạn trông như thế nào? –

+0

[Json.NET] (http://json.net/) –

Trả lời

13

Các json là loại kỳ lạ, nó giống như các sinh viên là tài sản của đối tượng "GetQuestion" , thật dễ dàng để trở thành một Danh sách .....

Giới thiệu về các thư viện bạn có thể sử dụng.

Và có thể có nhiều hơn nữa, nhưng đó là những gì tôi đã sử dụng

Giới thiệu về json I don' t bây giờ có thể giống như thế này

public class GetQuestions 
{ 
    public List<Student> Questions { get; set; } 
} 

public class Student 
{ 
    public string Code { get; set; } 
    public string Questions { get; set; } 
} 

void Main() 
{ 
    var gq = new GetQuestions 
    { 
     Questions = new List<Student> 
     { 
      new Student {Code = "s1", Questions = "Q1,Q2"}, 
      new Student {Code = "s2", Questions = "Q1,Q2,Q3"}, 
      new Student {Code = "s3", Questions = "Q1,Q2,Q4"}, 
      new Student {Code = "s4", Questions = "Q1,Q2,Q5"}, 
     } 
    }; 

    //Using Newtonsoft.json. Dump is an extension method of [Linqpad][4] 
    JsonConvert.SerializeObject(gq).Dump(); 
} 

Linqpad

và kết quả là thế này

{ 
    "Questions":[ 
     {"Code":"s1","Questions":"Q1,Q2"}, 
     {"Code":"s2","Questions":"Q1,Q2,Q3"}, 
     {"Code":"s3","Questions":"Q1,Q2,Q4"}, 
     {"Code":"s4","Questions":"Q1,Q2,Q5"} 
     ] 
} 

Có, tôi biết json là khác nhau, nhưng json mà bạn muốn với từ điển.

void Main() 
{ 
    var f = new Foo 
    { 
     GetQuestions = new Dictionary<string, string> 
       { 
        {"s1", "Q1,Q2"}, 
        {"s2", "Q1,Q2,Q3"}, 
        {"s3", "Q1,Q2,Q4"}, 
        {"s4", "Q1,Q2,Q4,Q6"}, 
       } 
    }; 

    JsonConvert.SerializeObject(f).Dump(); 
} 

class Foo 
{ 
    public Dictionary<string, string> GetQuestions { get; set; } 
} 

Và với từ điển là khi bạn muốn nó .....

{ 
     "GetQuestions": 
     { 
       "s1":"Q1,Q2", 
       "s2":"Q1,Q2,Q3", 
       "s3":"Q1,Q2,Q4", 
       "s4":"Q1,Q2,Q4,Q6" 
     } 
} 
+0

cảm ơn rất nhiều. Tôi có thông tin đó trong Từ điển GetQuestions bằng cách thêm các phần tử vào nó (sử dụng phương thức Thêm) .Thực tế, định dạng hơi bị thay đổi. { \t GetQuestions: [ \t \t { \t \t \t "s1": "Q1, Q2", \t \t \t "s2": "Q3, Q4", \t \t \t "s3": "Q5, Q6 ", \t \t} \t \t] } bạn có thể vui lòng giúp tôi về điều này ... – Saravanan

+1

Câu trả lời hay! Tuy nhiên, tôi đã nhầm lẫn về 'Dump'. Tôi đào một số đào, và thấy rằng bạn có thể làm điều này: 'JsonConvert.SerializeObject (gq, Formatting.Indented);' và nó không yêu cầu bất kỳ craziness. –

+0

Làm cách nào để thêm nhiều phần tử bằng vòng lặp? Tôi có nhiều đầu vào từ người dùng. bạn có thể đề nghị tôi không? – Bhat

11

Không cần thực sự đối với gói JSON.NET. Bạn có thể sử dụng JavaScriptSerializer. Serialize method sẽ biến một thể hiện kiểu được quản lý thành chuỗi JSON.

var serializer = new JavaScriptSerializer(); 
var json = serializer.Serialize(instanceOfThing); 
6

Để chuyển đổi bất kỳ đối tượng hoặc danh sách đối tượng thành JSON, chúng tôi phải sử dụng hàm JsonConvert.SerializeObject.

Mã dưới đây giải thích việc sử dụng JSON trong một môi trường ASP.NET:

using System; 
using System.Data; 
using System.Configuration; 
using System.Collections; 
using System.Web; 
using System.Web.Security; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.UI.WebControls.WebParts; 
using System.Web.UI.HtmlControls; 
using Newtonsoft.Json; 
using System.Collections.Generic; 

namespace JSONFromCS 
{ 
    public partial class _Default : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e1) 
     { 
      List<Employee> eList = new List<Employee>(); 
      Employee e = new Employee(); 
      e.Name = "Minal"; 
      e.Age = 24; 

      eList.Add(e); 

      e = new Employee(); 
      e.Name = "Santosh"; 
      e.Age = 24; 

      eList.Add(e); 

      string ans = JsonConvert.SerializeObject(eList, Formatting.Indented); 

      string script = "var employeeList = {\"Employee\": " + ans+"};"; 
      script += "for(i = 0;i<employeeList.Employee.length;i++)"; 
      script += "{"; 
      script += "alert ('Name : ='+employeeList.Employee[i].Name+' 
      Age : = '+employeeList.Employee[i].Age);"; 
      script += "}"; 

      ClientScriptManager cs = Page.ClientScript; 
      cs.RegisterStartupScript(Page.GetType(), "JSON", script, true); 
     } 
    } 
    public class Employee 
    { 
     public string Name; 
     public int Age; 
    } 
} 

Sau khi chạy chương trình này, bạn sẽ nhận được hai cảnh báo

Trong ví dụ trên, chúng tôi đã tạo ra một danh sách đối tượng Employee và truyền nó cho hàm "JsonConvert.SerializeObject". Hàm này (thư viện JSON) sẽ chuyển đổi danh sách đối tượng sang định dạng JSON. Định dạng thực tế của JSON có thể được xem trong đoạn mã dưới đây:

{ "Maths" : [ {"Name"  : "Minal",  // First element 
          "Marks"  : 84, 
          "age"  : 23 }, 
          { 
          "Name"  : "Santosh", // Second element 
          "Marks"  : 91, 
          "age"  : 24 } 
          ],      
       "Science" : [ 
          { 
          "Name"  : "Sahoo",  // First Element 
          "Marks"  : 74, 
          "age"  : 27 }, 
          {       
          "Name"  : "Santosh", // Second Element 
          "Marks"  : 78, 
          "age"  : 41 } 
          ] 
      } 

Cú pháp:

  • {} - hoạt động như 'container'

  • [] - giữ mảng

  • : - Tên và giá trị được phân tách bằng dấu hai chấm

  • , - các phần tử mảng được phân cách bằng dấu phẩy

Mã này có nghĩa là cho các lập trình trung gian, những người muốn sử dụng C# 2.0 để tạo JSON và sử dụng trong các trang ASPX.

Bạn có thể tạo JSON từ đầu JavaScript, nhưng bạn sẽ làm gì để chuyển đổi danh sách đối tượng thành chuỗi JSON tương đương từ C#. Đó là lý do tại sao tôi đã viết bài viết này.

Trong C# 3.5, có một lớp sẵn có được sử dụng để tạo JSON có tên JavaScriptSerializer.

Mã sau đây minh họa cách sử dụng lớp đó để chuyển đổi thành JSON trong C# 3.5.

JavaScriptSerializer serializer = new JavaScriptSerializer() 
return serializer.Serialize(YOURLIST); 

Vì vậy, hãy cố gắng tạo ra một danh sách của mảng với câu hỏi và sau đó serialize danh sách này vào JSON

+4

Mẹo chuyên nghiệp: cho mã mẫu thử nghiệm, nhắm mục tiêu cửa sổ bảng điều khiển hoặc kiểm tra đơn vị. không phải trang web. Làm cho nó -easy- cho họ để kiểm tra/thử, câu trả lời của bạn. –

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