首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用JavaScriptSerializer创建json

使用JavaScriptSerializer创建json
EN

Stack Overflow用户
提问于 2012-10-16 22:19:33
回答 1查看 1.1K关注 0票数 0

我在Asp.net的泛型处理程序中有以下代码:

代码语言:javascript
复制
    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

代码语言:javascript
复制
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;
   }
}

它给我的输出是:

代码语言:javascript
复制
{"Data":[[["Trigonometry","Chemistry"]],[["Physics","Biology"]]]}

但我希望它采用以下格式:

代码语言:javascript
复制
{"Data":[["Trigonometry","Chemistry"],["Physics","Biology"]]}

JavaScriptSerializer是如何工作的?

为什么要创建另一个数组?

我应该怎么做才能解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-17 13:18:34

它不是完美的,但对我来说是有效的:

代码语言:javascript
复制
var rows = Row.GetRows();
StringBuilder sb = new StringBuilder("\"aaData\":[");

for (int i = 0; i < rows.Count; i++)
{
    if (i == 0){  sb.Append("[");  }
    else  {  sb.Append(",[");  }
    for (int j = 0; j < rows[i].fields.Count; j++)
    {
        if (j == 0){
            sb.Append("\"" + rows[i].fields[j].ToString() + "\"");
        }
        else{
            sb.Append(",\"" + rows[i].fields[j].ToString() + "\"");
        }
    }
    sb.Append("]");            
}
sb.Append("]}");

var json = sb.ToString();

context.Response.ContentType = "application/json";
context.Response.Write(json);

由于JavaScriptSerializer向json对象添加了另一个[],所以我尽量不使用它,而是手动创建json字符串。

让我知道使用这种方式的利弊。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12916779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档