私は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」オブジェクトのプロパティのようなもので、リストにするのは簡単です...
使用できるライブラリについては。
そしてもっとたくさんあるかもしれませんが、それは私が使用したものです
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();
}
結果はこれです
{
"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
method は、マネージタイプのインスタンスを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;
}
}
このプログラムを実行すると、2つのアラートが表示されます
上記の例では、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);
つまり、質問を含む配列のリストを作成してから、このリストをJSONにシリアル化してください