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

本文关键字:JavaScript 对象 文字 | 更新日期: 2023-09-27 18:32:07

我需要在 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# 中生成 JavaScript 对象文字

我认为他可能要求的是将 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);

编辑:

这是@yyamil的评论:

如果您

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

var notificationPayload = new
{
    notification = new
    {
        title = "Title", 
        body = "body"
    }
};
string json = JsonConvert.SerializeObject(notificationPayload);