Cod*_*der 15 javascript c# asp.net json naming-conventions
我使用ASP.Net将C#中设计的类序列化为JSON.我的Javascript应用程序然后使用AJAX请求这些对象.我现在在几个项目上完成了这个,但是我遇到了C#标准命名约定为公共成员使用PascalCase的问题,而在Javascript中它们通常是camelCase.
当我有一些使用camelCase的Javascript-only类和一些使用PascalCase的混合使用类时,这尤其成为一个问题,因为我最初在C#中设计它们.
其他人如何处理这类问题?你只挑选一个或另一个?如果是这样,哪一个被更广泛地选择?或者是否有一种聪明的方法来使用JSON序列化程序在两种命名约定之间切换?
Jes*_*ing 12
您可以使用JSON.net为您序列化数据,甚至可以告诉它使用camelCase. 这个问题提出了类似的问题.这是一个代码示例供参考:
Product product = new Product {
ExpiryDate = new DateTime(2010, 12, 20, 18, 1, 0, DateTimeKind.Utc), Name = "Widget", Price = 9.99m, Sizes = new[] {
"Small", "Medium", "Large"
}
};
string json =
JsonConvert.SerializeObject(
product,
Formatting.Indented,
new JsonSerializerSettings {
ContractResolver = new CamelCasePropertyNamesContractResolver()
});
Run Code Online (Sandbox Code Playgroud)
不要担心JSON.net 的性能,因为它与本机序列化的性能相当(在大多数情况下更好).
如果您使用的是DataContractJsonSerializer,则可以使用DataMemberAttribute.Name属性指定名称:
[DataContract]
public class User
{
[DataMember(Name = "user_id")]
public int UserId { get; set; }
[DataMember(Name = "user_name")]
public string UserName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
将序列化为
{"user_id":123,"user_name":"John Doe"}
Run Code Online (Sandbox Code Playgroud)
我只是使用服务器给我的东西.
C#
public class Person
{
public string Name { get; set; }
public string Email { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
JS:
$.ajax({
...
success: function(data) {
var person = data;
alert(person.Name);
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3622 次 |
| 最近记录: |