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

如何在C#中生成JavaScript对象文字?,c#,json,c#-4.0,asp.net-mvc-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 } }, PrivateEm

我需要在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" }
    }
}
这定义了一个客户端对象,其模型属性反映了MVC4视图模型中的每一行的外观。我可以使用纯反射来生成字符串文本,但我更愿意以某种方式利用.NET中已经可用的JSON序列化服务。为此,我想我需要创建一个匿名对象,其属性与上面的JS属性相对应。我怎么能这样做

编辑:
我需要循环查看模型类中的属性,并生成一个C#对象,该对象将序列化为与上面类似的视图模型类的JavaScript“转换”。

我认为他可能要求的是将C#对象转换为JSON字符串

试试这个:

编辑(关于如何使用的示例):


生成的代码应该是这样的,还是动态的?你不能把它放在一个文本字符串中吗?@Guffa我想把代码放在一个文本字符串中;我只是不想让自己的序列化程序只使用讨厌的字符串concat。如果你不想要,你想要什么?我想要在C#字符串中生成一个JavaScript对象文本。我想我的标题暗示了这一点。很多json序列化都是这样完成的。谢谢Mathew,我希望我的问题不会像@Guffa建议的那么迟钝,但我也在问如何将这些属性动态地放入C#对象中,以便它们得到正确的序列化。我需要创建一个动态对象,每个属性都有一个字段属性,例如在产品中。这一部分我的问题不够清楚,但你回答得很清楚。@ProfK我记得CodeProject上有一个项目,允许你获取JSON结果并创建所有相关对象,包括序列化/反序列化方面(使用NewtonKing JSON.NET库),回答得很好。如果不想创建一个新类来序列化一个json对象,也可以使用匿名对象:var notificationPayload=new{notification=new{title=“title”,body=“body”};字符串json=JsonConvert.SerializeObject(notificationPayload);
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);
var notificationPayload = new
{
    notification = new
    {
        title = "Title", 
        body = "body"
    }
};

string json = JsonConvert.SerializeObject(notificationPayload);