相关疑难解决方法(0)

使用 Json.NET 序列化时如何应用重新映射所有属性名称的一般规则?

将 Json 对象反序列化为 .Net 时type,如果字段名称不匹配,我发现您可以type用以下方式装饰您的属性[JsonProperty(PropertyName = "name")]

对于一些不匹配的属性来说,这很好,但是有没有办法设置约定或规则呢?

杰森

{
  "Job": [
    {
      "Job #": "1",
      "Job Type": "A",
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

C#

    [JsonProperty(PropertyName = "Job Type")]
    public string JobType { get; set; }

    [JsonProperty(PropertyName = "Job #")]
    public string JobNumber { get; set; }
Run Code Online (Sandbox Code Playgroud)

我有许多字段使用相似的名称,我想弄清楚,有没有办法告诉设置规则以始终删除空格(EG:)Job Type -> JobType并替换#Number(例如Job # -> JobNumber:)?

看起来自定义ContractResolver可能是唯一的解决方案,但我似乎不知道如何使用它来删除空格并将“#”替换为“Number”。有人有参考示例吗?

或者,我希望有一个我忽略的简单的解决方案。

PS 还接受更好标题的建议。

c# json json.net

5
推荐指数
1
解决办法
3294
查看次数

Json.Net:Html Helper Method无法重新生成

我遇到了一个问题,我创建的ASP.NET MVC html帮助器方法每次调用时都不会被"重新生成".

辅助方法的目的是创建要在angularjs框架中使用的Javascript对象.例如,这是一个代码片段,其中使用了helper方法(从html页面的脚本标记内调用):

var app = angular.module( "appName", ["ui.bootstrap"] );

app.controller( 'appCtrl', function( $scope ) {
    $scope.model = @Html.ToJavascript( Model, new string[] { "FirstName", "LastName", "ID", "Role" } );
} );
Run Code Online (Sandbox Code Playgroud)

Model是一个具有各种属性的类的实例,但我只希望将FirstName,LastName,ID和Role序列化为javascript对象.

ToJavascript()帮助器方法在statis类中定义如下:

   public static HtmlString ToJavascript( this HtmlHelper helper, object toConvert, string[] includedFields = null, Formatting formatting = Formatting.Indented, ReferenceLoopHandling loopHandling = ReferenceLoopHandling.Ignore )
    {
        using( var stringWriter = new StringWriter() )
        using( var jsonWriter = new JsonTextWriter( stringWriter ) )
        {
            var serializer = new JsonSerializer()
            { …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc json.net angularjs

2
推荐指数
1
解决办法
488
查看次数

标签 统计

json.net ×2

angularjs ×1

asp.net-mvc ×1

c# ×1

json ×1