2013-02-12 4 views
5

Я новичок в формате json. Я хочу создать следующую строку json, используя C# и json.net.Как создать строку json с помощью C#?

Это моя цель в формате Json:

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

Здесь я храню каждый студентов questions.But иногда, общее количество студентов может быть vary.for примером может быть s1, s2 или только s1 , s2, s3, s4 .... Это вычисляется во время выполнения на C#. Так что, я хочу создать строку json в зависимости от списка студентов ....

Прошу вас, чтобы я вышел из этой проблемы?

+0

[Что вы пробовали] (http://whathaveyoutried.com)? И как выглядит ваш список? –

+0

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

ответ

13

JSON является своего рода странно, это как студенты свойства объекта «GetQuestion» , должно быть легко быть списком .....

О библиотеках, которые вы могли бы использовать.

И может быть гораздо больше, но это то, что я использовал

О JSON Я не» t теперь может быть что-то вроде этого

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

и результат этого

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

Да, я знаю, что отличается JSON, но JSON, что вы хотите со словарем.

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

И словарь, как вы хотите .....

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

благодарит много. У меня есть эта информация в словаре GetQuestions, добавляя в нее элементы (используя метод Add). На самом деле формат слегка изменен. { \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] } могли бы вы помочь мне в этом ... – Saravanan

+1

Великий ответ! Однако меня смутило «Дамп». Я выкапываю копание и обнаружил, что вы можете это сделать: 'JsonConvert.SerializeObject (gq, Formatting.Indented);' и это не требует безумия. –

+0

Как добавить несколько элементов с помощью цикла? У меня есть несколько входов от пользователя. можете ли вы предложить мне? – Bhat

11

Никакой реальной потребности в пакете JSON.NET. Вы можете использовать JavaScriptSerializer. Serialize method превратит экземпляр управляемого типа в строку JSON.

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

Чтобы преобразовать любой объект или список в формате JSON, мы должны использовать функцию JsonConvert.SerializeObject.

Код ниже демонстрирует использование JSON в среде 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; 
    } 
} 

После запуска этой программы, вы получите два предупреждения

В приведенном выше примере, мы создали список объекта Employee и передал его функции JsonConvert.SerializeObject. Эта функция (библиотека JSON) преобразует список объектов в формат JSON. Фактический формат JSON можно рассматривать в приведенном ниже фрагменте кода:

{ "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# 2.0 для создания JSON и использовать на страницах ASPX.

Вы можете создать JSON с конца JavaScript, но что бы вы сделали, чтобы преобразовать список объектов в эквивалентную строку JSON из C#. Вот почему я написал эту статью.

В C# 3.5 есть встроенный класс, используемый для создания JSON с именем JavaScriptSerializer.

Следующий код демонстрирует, как использовать этот класс для преобразования в JSON в C# 3.5.

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

Итак, попытайтесь создать список массивов с вопросов, а затем сериализации этот список в формате JSON

+4

Pro Совет: для примера демонстрационного кода укажите консольное окно или единичный тест. а не веб-страницу. Сделайте это - легко - для них, чтобы проверить/попробовать, ваш ответ. –