65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 JSON 库从 C# 创建 JSON

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.66/5 (20投票s)

2010年5月5日

CPOL

2分钟阅读

viewsIcon

451047

downloadIcon

22318

使用 CodePlex 提供的 JSON 库从 C# 创建 JSON。

引言

本文演示了如何从 C# 代码创建 JSON 对象,并借助 json 库 在 JavaScript 中使用。

背景 

JSON(JavaScript 对象表示法的首字母缩写)是一种轻量级的、基于文本的开放标准,旨在实现人类可读的数据交换。它源自 JavaScript 编程语言,用于表示简单的数据结构和关联数组,称为对象(“JSON”中的“O”)。尽管它与 JavaScript 有关,但它是语言无关的,几乎每种编程语言都有解析器可用。

如今,AJAX 在 Web 开发中非常流行,而 AJAX 创建的请求的响应通常返回 XML。我们也可以从服务器返回 JSON,其好处是“我们可以像在正常的 OOP 中一样使用数据”。

代码

要将任何对象或对象列表转换为 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 }
                           ] 
                } 

语法

  • {} - 充当“容器”
  • [] - 保存数组
  • : - 名称和值由冒号分隔
  • , - 数组元素由逗号分隔

相同的代码被写入以在 Windows 平台上进行测试,并且库的实际输出如下所示:

关注点

此代码适用于希望使用 C# 2.0 创建 JSON 并在 ASPX 页面中使用的中级程序员。

您可以在 JavaScript 端创建 JSON,但是如果要将对象列表转换为 C# 中的等效 JSON 字符串,该怎么办?这就是我撰写本文的原因。

在 C# 3.5 中,有一个内置类用于创建 JSON,名为 JavaScriptSerializer

以下代码演示了如何在 C#3.5 中使用该类转换为 JSON。

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

历史 

  • 2010 年 5 月 6 日添加的优势和 JSON 用法
© . All rights reserved.