从服务返回强类型对象,并将 JSON 属性呈现为驼峰命名法,因为这是 ASP.NET Core MVC 中的默认设置。
dynamic然而,有时我们需要使用关键字和类来动态创建一些东西ExpandoObject。
这些属性不再是驼峰式的。
如何强制 ASP.NET Core MVC 来实现一切?
我使用 EF Core 3.0 和数据库优先的方法来Scaffold-DbContext创建 SQL Server 数据库:
dotnet ef dbcontext
scaffold "Server=***;Database=***;User Id=***;Password=****;" Microsoft.EntityFrameworkCore.SqlServer
-o Models -c "MyContext" --project=Data
Run Code Online (Sandbox Code Playgroud)
生成模型时,它对变量使用指定的命名,例如:
例如,如果数据库中的列名为
ISBuy变成IsbuyCategoryID=>CategoryId这真的错过了我的系统......
是否有一种方法可以防止转换和生成与数据库相同的变量名称,或者是否有一种超级神奇的方法可以防止这些并像 EF Core 那样使用驼峰式大小写?
我不是在谈论从 API 返回的对象,因为我找到了很多针对这种情况的解决方案,但从未找到过这个。
谢谢
.net camelcasing entity-framework-core .net-core asp.net-core-webapi
所以我知道有些语言有预期的约定.
PHP - underscore_case() [大多数情况下,lolo]
Java - camelCase()
C# - PascalCase()
等等
什么是"Pythonic"命名约定?我知道最终并不重要,只是想知道是否有大多数模块完成的"最佳实践"方式.
我正在尝试在code.google.com上使用NameCase php类.当我运行它时,我得到了这个通知,我不明白为什么.
PHP注意:使用未定义的常量Mc - 在namecase.php中假设'Mc'(54):第1行的regexp代码
53 if( preg_match('/\bMac[A-Za-z]{2,}[^aciozj]\b/', $str) || preg_match('/\bMc/', $str) ) {
54 $str = preg_replace("/\b(Ma?c)([A-Za-z]+)/e", "$1.ucfirst('\\2')", $str);
55 // Now correct for "Mac" exceptions
56 $str = preg_replace('/\bMacEvicius/','Macevicius', $str); // Lithuanian
57 $str = preg_replace('/\bMacHado/', 'Machado', $str); // Portuguese
58 $str = preg_replace('/\bMacHar/', 'Machar', $str);
59 ...
Run Code Online (Sandbox Code Playgroud)
有没有什么可以做的纠正代码,所以它不会产生通知.
谢谢
我发现这个例子将CamelCase更改为Dashes.我修改了代码,用空格而不是短划线将CamelCase更改为Sentencecase.它工作正常,但不是一个字母,如"我"和"一个".任何想法如何融入其中?
thisIsAPain - >这是一种痛苦
var str = "thisIsAPain";
str = camelCaseToSpacedSentenceCase(str);
alert(str)
function camelCaseToSpacedSentenceCase(str)
{
var spacedCamel = str.replace(/\W+/g, " ").replace(/([a-z\d])([A-Z])/g, "$1 $2");
spacedCamel = spacedCamel.toLowerCase();
spacedCamel = spacedCamel.substring(0,1).toUpperCase() + spacedCamel.substring(1,spacedCamel.length)
return spacedCamel;
}
Run Code Online (Sandbox Code Playgroud)我已经制作了这段代码.我想要一个小的正则表达式.
String.prototype.capitalize = function() {
return this.charAt(0).toUpperCase() + this.slice(1);
}
String.prototype.initCap = function () {
var new_str = this.split(' '),
i,
arr = [];
for (i = 0; i < new_str.length; i++) {
arr.push(initCap(new_str[i]).capitalize());
}
return arr.join(' ');
}
alert("hello world".initCap());
Run Code Online (Sandbox Code Playgroud)
我想要的是
"你好世界".initCap()=> Hello World
"hEllo woRld".initCap()=> Hello World
我的上面的代码给了我解决方案,但我想要一个更好,更快的解决方案与正则表达式
我有一个名为Ipv4Address. 它的惯用骆驼案例名称是什么?惯用语我的意思是满足Google Java 风格和满足 Checkstyle AbbreviationAsWordInName检查。
这个问题没有回答我的问题 - 我在这里专门询问如何处理首字母缩略词中已经是小写的字母“v”。
Ipv可能暗示有“ipv”一词或首字母缩写词“IPV”。但实际的首字母缩写词是“IPv”,由两个词组成:“IP”和“版本”
我在 application.properties 中有带有属性的 REST API,如下所示:
spring.jackson.property-naming-strategy: CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES
Run Code Online (Sandbox Code Playgroud)
一切都好!但是当我使用 RestTemplate 进行如下操作时,我发现 Snake Case 中的所有键都为空(例如 nameEnglish),但常规键名可以(例如 rank),我该如何解决这个问题?
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(exclude = {"id"})
@Entity
public class Brand implements Serializable {
private static final long serialVersionUID = 9165709510160554127L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Version
private Integer version;
private String nameChinese;
private String nameEnglish;
private String rank;
}
Run Code Online (Sandbox Code Playgroud)
我保存了如下数据:
Saved Brand: Brand(id=1, version=1, nameChinese=??, nameEnglish=Lego, rank=Top)
Run Code Online (Sandbox Code Playgroud)
但是当我尝试如下代码时:
Brand brands = restTemplate.getForObject("http://localhost:8080/api/brand/lego", Brand.class);
System.out.println(brands);
Run Code Online (Sandbox Code Playgroud)
结果如下,您将看到所有 Camel Case 属性都为 null,尽管我为它们设置了值:
Saved Brand: Brand(id=1, version=1, …Run Code Online (Sandbox Code Playgroud) 在我正在编写的Visual Studio代码片段中,我想将蛇案例字符串转换为驼峰案例.
从文档我知道语法是
'regex'
所以我想出了这个:
'format'
然而,此代码仅适用于具有2个元素的字符串(例如"carrot_cake"),而我希望处理具有任意数量元素的字符串("blueberry_pie_with_a_cup_of_coffee").
我想在'regex'和中需要某种递归'format',但我不知道该怎么做.
如何匹配任意数量的模式出现?
我正在使用 ASP.NET Core 和System.Text.Json.
这是我的示例操作方法:
[HttpGet]
public object Person()
{
dynamic relatedItems = new ExpandoObject();
relatedItems.LastName = "Last";
var result = new
{
FirstName = "First",
RelatedItems = relatedItems
};
return result;
}
Run Code Online (Sandbox Code Playgroud)
这是我得到的回应:
{
firstName: "First",
relatedItems: {
LastName: "Last"
}
}
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,LastName它是动态属性的一个属性,没有被骆驼化。
我怎样才能让所有东西都装在骆驼箱里回来?
更新。这个答案不是我的答案。正如你所看到的,我已经拥有firstName正确骆驼化的财产。
camelcasing ×10
regex ×4
asp.net-core ×2
c# ×2
javascript ×2
json ×2
.net ×1
.net-core ×1
java ×1
pascalcasing ×1
php ×1
python ×1
resttemplate ×1
string ×1