【问题标题】:Remove ↵ from JSON in web api + AngularJS从 web api + AngularJS 中的 JSON 中删除 ↵
【发布时间】:2015-02-13 04:54:08
【问题描述】:

我正在使用 web API 2 + AngularJS 将我的数据返回到角度控制器,但我不知道为什么我的 json 结果中不断出现这个字符 ↵。

我的 ASP 控制器有这个方法。

public IHttpActionResult GetAditionalFieldCOnfiguration()
    {
        var ListAdditionalFields = new List<rgAdditionalField>() 
        { 
            new rgAdditionalField(){  Type="text", Label="Nombre", Model="first", Val="Carlo" },
            new rgAdditionalField(){  Type="text", Label="Apellido", Model="last", Val="Carlos prueba"},
            new rgAdditionalField(){  Type="text", Label="Direc", Model="direccion", Val="los alpes"},
        };

        return Ok(ListAdditionalFields);
    }

我在我的角度控制器中得到了这个(我尝试了 $http、$resource 和 Restangular 并得到了相同的结果):

我在 WebApiConfig 中尝试了不同的配置,但没有任何效果,配置:

 public static JsonSerializerSettings GetSettingListFormat(rgJsonSettingType type)
    {

        switch (type)
        {
            case rgJsonSettingType.List:
                return new JsonSerializerSettings { PreserveReferencesHandling = PreserveReferencesHandling.None, ReferenceLoopHandling = ReferenceLoopHandling.Ignore };                    
            case rgJsonSettingType.Single:
                return new JsonSerializerSettings { PreserveReferencesHandling = PreserveReferencesHandling.Objects, ReferenceLoopHandling = ReferenceLoopHandling.Ignore };                    
            case rgJsonSettingType.SingleCamelCase:
                return new JsonSerializerSettings { PreserveReferencesHandling = PreserveReferencesHandling.Objects, ContractResolver = new CamelCasePropertyNamesContractResolver() };
            case rgJsonSettingType.ListCamelCase:
                return new JsonSerializerSettings { PreserveReferencesHandling = PreserveReferencesHandling.None, ReferenceLoopHandling = ReferenceLoopHandling.Ignore, ContractResolver = new CamelCasePropertyNamesContractResolver() };

        }

        return new JsonSerializerSettings();
    }

我尝试使用 HttpResponseMessage 并返回:

return   Request.CreateResponse(HttpStatusCode.OK, ListAdditionalFields, JsonConfiguration.....)

没有别的了。

你能帮帮我吗?

【问题讨论】:

  • 不只是您的调试工具或任何表明您有回车的东西吗?
  • 但是为什么我的代码可以在 mvc 控制器中工作,而 web api 控制器却不能,我使用相同的 json 配置得到了不同的结果。谢谢。

标签: asp.net-mvc angularjs json.net asp.net-web-api asp.net-web-api2


【解决方案1】:

我不知道 AngularJS 的控制器背后是什么,但我会以这种方式删除这个 ↵ 输入符号。

用正则表达式在你的 angularjs 控制器中创建一些函数来检查你的字符串是否包含 ↵ like:

  $scope.hasEnter = function(str) {
        var enter= /\n/gi;
        if (enter.test(str)) {
            return true;
        } else
            return false;
    };

如果这是真的,只需将其替换为您需要的字符即可。

希望这个想法对你有所帮助。

【讨论】:

  • 感谢阿曼,但我认为问题出在 web api 配置中,因为我尝试使用 mvc 控制器使用相同的代码并且工作正常。
  • 原因可能是执行代码的顺序。我有 DDD 应用程序结构,其中首先执行 AngularJS 控制器中的代码,然后在控制器中调用 RESTful 服务中的代码。在一种情况下,我也遇到了输入符号的问题,我通过这种方式掌握了它。
猜你喜欢
  • 2012-07-02
  • 2013-10-23
  • 2020-09-20
  • 2012-04-26
  • 1970-01-01
  • 2021-02-09
  • 1970-01-01
  • 1970-01-01
  • 2016-04-15
相关资源
最近更新 更多