2013-02-12 7 views
5

Jestem nowy w formacie json. Chcę utworzyć następujący ciąg json za pomocą C# i pakietu json.net.Jak utworzyć ciąg znaków json za pomocą C#?

To jest mój cel formacie JSON:

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

Tutaj jestem przechowywania każda studenci questions.But czasami, łączna liczba studentów może być vary.for Przykładem może być S1, S2 tylko albo s1 , s2, s3, s4 .... Jest to obliczane w środowisku wykonawczym w języku C#. Tak, chcę utworzyć ciąg znaków json w zależności od listy studentów ....

Proszę wskazać mi, aby wydostać się z tego problemu?

+0

[Co próbowałeś] (http://whathaveyoutried.com)? A jak wygląda twoja lista? –

+0

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

Odpowiedz

13

JSON jest trochę dziwne, to jak studenci są właściwości „GetQuestion” obiektu , powinno być łatwo być Listą .....

Informacje o bibliotekach, których można użyć.

i nie może być o wiele więcej, ale to, co Użyłem

O json I don” t teraz może coś takiego

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

a wynik jest ten

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

Tak wiem, że JSON jest inna, ale json, że chcesz ze słownika.

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; } 
} 

I ze słownika, jak chcesz .....

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

dziękuje za dużo.i mają te informacje w słowniku GetQuestions przez dodanie do niego elementów (za pomocą metody Add). W rzeczywistości format jest nieznacznie zmieniony. { \t GetQuestions: [ \t \t { \t \t \t "S1": "Q1, Q2" \t \t \t "S2": "Q3, Q4" \t \t \t "S3": "P5, P6 ” \t \t} \t \t] } mógłbyś mi pomóc w tym ... – Saravanan

+1

Wielką odpowiedź! Jednak byłem zdezorientowany "Dump". Kopiowałem trochę kopania i stwierdziłem, że możesz to zrobić: 'JsonConvert.SerializeObject (gq, Formatting.Indented);' i to nie wymaga żadnego szaleństwa. –

+0

Jak mogę dodać wiele elementów za pomocą pętli? Mam wiele danych wejściowych od użytkownika. czy możesz mnie zasugerować? – Bhat

11

Nie ma potrzeby korzystania z pakietu JSON.NET. Możesz użyć JavaScriptSerializer. Serialize method zamieni instancję zarządzanego typu na ciąg JSON.

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

Aby przekonwertować dowolny obiekt lub listę obiektów do JSON, musimy użyć funkcji JsonConvert.SerializeObject.

Poniższy kod demonstruje użycie JSON w środowisku 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; 
    } 
} 

Po uruchomieniu tego programu, otrzymasz dwa alarmy

W powyższym przykładzie, stworzyliśmy listę obiektu Employee i przekazał go do funkcji "JsonConvert.SerializeObject". Ta funkcja (biblioteka JSON) przekształci listę obiektów w format JSON. Rzeczywisty format JSON można obejrzeć w poniższym fragmencie kodu:

{ "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 } 
          ] 
      } 

Składnia:

  • {} - działa jak 'kontenerów'

  • [] - posiada tablice

  • : - Nazwy i wartości są rozdzielone dwukropkiem

  • , - elementy układu są oddzielone przecinkami

Kod ten jest przeznaczony dla programistów pośrednich, którzy chcą korzystać z C# 2.0 do tworzenia JSON i używać na stronach ASPX.

Możesz utworzyć JSON z końca JavaScript, ale co byś zrobił, aby przekonwertować listę obiektów na równoważny ciąg JSON z C#. Właśnie dlatego napisałem ten artykuł.

W języku C# 3.5 istnieje wbudowana klasa używana do tworzenia JSON o nazwie JavaScriptSerializer.

Poniższy kod ilustruje sposób użycia tej klasy do przekonwertowania w JSON w języku C# 3.5.

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

Tak, staramy się stworzyć listę tablic z pytaniami, a następnie serializacji tę listę do JSON

+4

Pro Porada: dla przykładowego kodu demo, celuj w okno konsoli lub test jednostkowy. nie jest stroną internetową. Niech sprawi, że łatwo będzie im przetestować/spróbować, twoją odpowiedź. –

Powiązane problemy