Asp.netの汎用ハンドラーに次のコードがあります。
var students= Student.GetStudents();
var result = new
{
Data = students.Select(s => new []{s.subjects})
};
var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
var json = serializer.Serialize(result);
context.Response.ContentType = "application/json";
context.Response.Write(json);
クラスに適用Student
:
public class Student
{
public List<String> subjects{get; set;}
Student()
{
subjects= new List<string>();
}
public static IEnumerable<Student> GetStudents()
{
List<Student> students= new List<Student>();
Student s1 = new Student();
s1.subjects.Add("Trigonometry");
s1.subjects.Add("Chemistry");
students.Add(row1);
Student s2 = new Student();
s2.subjects.Add("Physics");
s2.subjects.Add("Biology");
students.Add(s2);
return students;
}
}
これにより、次のように出力されます。
{"Data":[[["Trigonometry","Chemistry"]],[["Physics","Biology"]]]}
しかし、私はそれを次の形式で欲しいです:
{"Data":[["Trigonometry","Chemistry"],["Physics","Biology"]]}
JavaScriptSerializerはどのように機能しますか?
なぜ別のアレイを作成するのですか?
これを修正するにはどうすればよいですか?