如何在C#中生成JavaScript对象文字?

Pro*_*ofK 4 c# json c#-4.0 asp.net-mvc-4

我需要在C#代码中创建以下JavaScript对象文字作为字符串,并且正在寻找有关如何最好地执行此操作的一些提示.

model: {
    id: "Id",
    fields: {
        Surname: { type: "string", validation: { required: true } },
        FirstName: { type: "string", validation: { required: true } },
        PrivateEmail: { type: "string", validation: { required: true } },
        DefaultPhone: { type: "string" },
        CompanyName: { type: "string" },
        CreateDate: { type: "date" },
        LastLoginDate: { type: "date" },
        IsLockedOut: { type: "boolean" }
    }
}
Run Code Online (Sandbox Code Playgroud)

这定义了一个客户端对象,该对象具有一个模型属性,该属性反映了我的MVC4视图模型中的每一行的外观.我可以使用纯反射来生成字符串文字,但我宁愿在某种程度上利用.NET中已有的JSON序列化服务.为此,我想我需要创建一个匿名对象,其属性对应于上面的JS属性.我怎么能这样做?

编辑: 我需要在视图模型类中循环遍历属性并生成一个C#对象,该对象将序列化为视图模型类的JavaScript'transform',类似于上面的那个.

Mat*_*hew 5

我认为他可能会问的是将C#对象转换为JSON字符串.

试试这个:

http://msdn.microsoft.com/en-us/library/system.json.jsonobject%28v=vs.95%29.aspx

要么

http://james.newtonking.com/pages/json-net.aspx

编辑(如何使用的一个例子):

Product product = new Product();
product.Name = "Apple";
product.Expiry = new DateTime(2008, 12, 28);
product.Price = 3.99M;
product.Sizes = new string[] { "Small", "Medium", "Large" };

string json = JsonConvert.SerializeObject(product);
//{
//  "Name": "Apple",
//  "Expiry": new Date(1230422400000),
//  "Price": 3.99,
//  "Sizes": [
//    "Small",
//    "Medium",
//    "Large"
//  ]
//}

Product deserializedProduct = JsonConvert.DeserializeObject<Product>(json);
Run Code Online (Sandbox Code Playgroud)

编辑:

这是来自@yyamil的评论:

您也可以使用匿名对象,以防您不想创建一个新类来序列化json对象:

var notificationPayload = new
{
    notification = new
    {
        title = "Title", 
        body = "body"
    }
};

string json = JsonConvert.SerializeObject(notificationPayload);
Run Code Online (Sandbox Code Playgroud)