【问题标题】:How to set Json data to camelCase once on the client side如何在客户端将 Json 数据设置为 camelCase 一次
【发布时间】:2016-08-23 01:47:03
【问题描述】:

如何将序列化的 json 数据转换为 camelCase 数据而不是所有属性大写?

在我看来,这是我如何在 Json 中转 c#

team = @Html.Raw(Json.Encode(Model.Employees));

这是数据:“顺便说一句,所有这些都是测试数据”

 team = [
    {
        "UserId": "902c2fe0-fcdf-4ed8-9591-5d8e01300cda",
        "UserName": "buderbits",
        "ID": 719,
        "Email": "erik@builder.com",
        "FName": "Builder",
        "LName": "Bits",
        "Title": "Glaizer",
        "Zip": "10027",
        "Phone": "456-768-9987",
        "AddressLine": "124 street st.",
        "City": "Nyc",
        "StateCD": "NY",
        "Avatar": "/users/RFyEQxDCpEavRfgDA028/qvzlezay.u1l.png",
        "RowNum": 3,
        "Total": 4,
        "IsDirty": false,
        "IsFlaggedForDelete": false,
        "SortOrder": 0
    },
    {
        "UserId": "a9cec535-ac48-4197-b8a0-87702cb14e52",
        "UserName": "stdard",
        "ID": 717,
        "Email": "erik@vinyl.org",
        "FName": "Erik",
        "LName": "Little",
        "Title": "Developer",
        "Zip": "75040",
        "Phone": "123-456-7890",
        "AddressLine": "123 Test Street",
        "City": "Garland",
        "StateCD": "TX",
        "Avatar": "/users/CZmP9uvdTCg8CdEhOAX0/kcm1yg2o.spn.gif",
        "RowNum": 1,
        "Total": 4,
        "IsDirty": false,
        "IsFlaggedForDelete": false,
        "SortOrder": 0
    },
    {
        "UserId": "1a4ef17a-9cd8-42e4-b172-3071e29a222a",
        "UserName": "teammber1",
        "ID": 2744,
        "Email": "erik2@erik.com",
        "FName": "Derick",
        "LName": "Mavrick",
        "Title": "Drafting",
        "Zip": "77702",
        "Phone": "111-111-1111",
        "AddressLine": "123 Teammember ST",
        "City": "Beaumont",
        "StateCD": "TX",
        "Avatar": "/users/rPF9z0a7yLJpp4e1Zb15/os1cmk0r.kkg.jpg",
        "RowNum": 4,
        "Total": 4,
        "IsDirty": false,
        "IsFlaggedForDelete": false,
        "SortOrder": 0
    },
    {
        "UserId": "17fab37f-d978-441c-a30d-8c08a7e6ce9b",
        "UserName": "stoontsoftware",
        "ID": 718,
        "Email": "support@storefront.net",
        "FName": "Mark",
        "LName": "Taylor",
        "Title": "Hosting",
        "Zip": "75070",
        "Phone": "345-432-1153",
        "AddressLine": "123 street dr",
        "City": "McKinney",
        "StateCD": "TX",
        "Avatar": "/users/y5TPPr0HR1GQLxkEhDuj/3bmwy0sk.qoi.png",
        "RowNum": 2,
        "Total": 4,
        "IsDirty": false,
        "IsFlaggedForDelete": false,
        "SortOrder": 0
    }
];

帮助?

【问题讨论】:

    标签: c# json asp.net-mvc camelcasing


    【解决方案1】:

    您可以使用 Newtonsoft 的 json 序列化程序 (Json.net),它允许您在序列化对象时指定格式化程序。

    var d = @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model.Employees, 
            new JsonSerializerSettings
            {
               ContractResolver = new CamelCasePropertyNamesContractResolver()
            }));
    console.log(d);
    

    这将为您的序列化创建的 js 对象/数组提供小写的属性名称。

    【讨论】:

      【解决方案2】:

      您可以在发送给客户端之前将您的字段转换为驼峰大小写,方法是将您的初始查询转换为具有驼峰大小写字段的动态对象或视图模型。例如,如果原始查询:

      var model=db.Records.ToList();
      

      产生您的输出,然后将您的查询修改为:

      var model=db.Records.Select(r=>
        new {firstName=r.FirstName,lastName=LastName, etc...).ToList();
      

      要在客户端真正做到 100%,您需要使用 javascript 方法重建表对象,该方法将每个对象替换为正确命名的对象。

      function NewObject(input){
          input=input||{};
          this.firstName=input.FirstName||'';
          this.lastName=input.LastName||'';
          ...etc.
      }
      
      var model=@Model; //your Json data as an object
      for(var i=0;i<model.length;i++){
          model[i]=new NewObject(model[i]);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-06-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-27
        • 2015-05-07
        • 1970-01-01
        相关资源
        最近更新 更多