簡體   English   中英

如何使用C#創建我的json字符串?

[英]How to create my json string by using C#?

我是json格式的新手。 我想通過使用C#和json.net包創建一個以下的json字符串。

這是我的目標Json格式:

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

在這里,我正在存儲每個學生的問題。但有時候,學生的總數可能會有所不同。例如,它可能只有s1,s2或s1,s2,s3,s4 ....這是在運行時用C#計算的。所以,我想根據學生列表創建json字符串....

請指導我擺脫這個問題?

json有點奇怪,就像學生是“GetQuestion”對象的屬性一樣,它應該很容易成為一個List .....

關於您可以使用的庫。

還有更多,但這就是我用過的東西

關於json我現在可能不是這樣的

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

沒有真正需要JSON.NET包。 您可以使用JavaScriptSerializer Serialize方法將托管類型實例轉換為JSON字符串。

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

要將任何對象或對象列表轉換為JSON,我們必須使用函數JsonConvert.SerializeObject。

以下代碼演示了在ASP.NET環境中使用JSON:

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頁面中使用的中間程序員。

您可以從JavaScript端創建JSON,但是如何將對象列表轉換為C#中的等效JSON字符串。 這就是我寫這篇文章的原因。

在C#3.5中,有一個內置類用於創建名為JavaScriptSerializer的JSON。

以下代碼演示了如何使用該類在C#3.5中轉換為JSON。

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

因此,嘗試使用Questions創建一個數組列表,然后將此列表序列化為JSON

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM